home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / MPW Oberon 2.1168 / OInterfaces / QuickTimeComponents.mod < prev    next >
Encoding:
Text File  |  1995-08-10  |  145.6 KB  |  3,468 lines  |  [TEXT/MPS ]

  1. (*
  2.      File:        QuickTimeComponents.mod
  3.  
  4.      Contains:    QuickTime Interfaces.
  5.  
  6.      Version:    Technology:    QuickTime 2.0
  7.                  Package:    Universal Interfaces 2.0 in “MPW Latest” on ETO #17
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs.applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. *)
  19.  
  20. (*$TAGS-*)
  21. (*$CALLING PASCAL*)
  22. MODULE QuickTimeComponents;
  23.  
  24. IMPORT SYSTEM, Types, Quickdraw, Menus, Components, ImageCompression, Movies,
  25.        Video, Memory, Files, Aliases, Dialogs, Events, QDOffscreen;
  26.  
  27. (* $PUSH*)
  28. (* $ALIGN MAC68K*)
  29. (* $LibExport+*)
  30.  
  31. CONST
  32.     clockComponentType*            = LONG("clok");
  33.     systemTickClock*                = LONG("tick");                        (* subtype*: 60ths since boot        *)
  34.     systemSecondClock*            = LONG("seco");                        (* subtype*: seconds since 1904        *)
  35.     systemMillisecondClock*        = LONG("mill");                        (* subtype*: 1000ths since boot        *)
  36.     systemMicrosecondClock*        = LONG("micr");
  37.  
  38.     kClockRateIsLinear*            = 1;
  39.     kClockImplementsCallBacks*    = 2;
  40.  
  41. (** These are Clock procedures **)
  42.  
  43. PROCEDURE ClockGetTime*(aClock: Components.ComponentInstance; VAR out: Movies.TimeRecord): Components.ComponentResult;
  44.     (*$IF NOT GENERATINGCFM*)
  45.     INLINE PASCAL $2F3C, $4, $1, $7000, $A82A;
  46.     (*$END*)
  47. PROCEDURE ClockNewCallBack*(aClock: Components.ComponentInstance; tb: Movies.TimeBase; callBackType: INTEGER): Movies.QTCallBack;
  48.     (*$IF NOT GENERATINGCFM*)
  49.     INLINE PASCAL $2F3C, $6, $2, $7000, $A82A;
  50.     (*$END*)
  51. PROCEDURE ClockDisposeCallBack*(aClock: Components.ComponentInstance; cb: Movies.QTCallBack): Components.ComponentResult;
  52.     (*$IF NOT GENERATINGCFM*)
  53.     INLINE PASCAL $2F3C, $4, $3, $7000, $A82A;
  54.     (*$END*)
  55. PROCEDURE ClockCallMeWhen*(aClock: Components.ComponentInstance; cb: Movies.QTCallBack; param1: LONGINT; param2: LONGINT; param3: LONGINT): Components.ComponentResult;
  56.     (*$IF NOT GENERATINGCFM*)
  57.     INLINE PASCAL $2F3C, $10, $4, $7000, $A82A;
  58.     (*$END*)
  59. PROCEDURE ClockCancelCallBack*(aClock: Components.ComponentInstance; cb: Movies.QTCallBack): Components.ComponentResult;
  60.     (*$IF NOT GENERATINGCFM*)
  61.     INLINE PASCAL $2F3C, $4, $5, $7000, $A82A;
  62.     (*$END*)
  63. PROCEDURE ClockRateChanged*(aClock: Components.ComponentInstance; cb: Movies.QTCallBack): Components.ComponentResult;
  64.     (*$IF NOT GENERATINGCFM*)
  65.     INLINE PASCAL $2F3C, $4, $6, $7000, $A82A;
  66.     (*$END*)
  67. PROCEDURE ClockTimeChanged*(aClock: Components.ComponentInstance; cb: Movies.QTCallBack): Components.ComponentResult;
  68.     (*$IF NOT GENERATINGCFM*)
  69.     INLINE PASCAL $2F3C, $4, $7, $7000, $A82A;
  70.     (*$END*)
  71. PROCEDURE ClockSetTimeBase*(aClock: Components.ComponentInstance; tb: Movies.TimeBase): Components.ComponentResult;
  72.     (*$IF NOT GENERATINGCFM*)
  73.     INLINE PASCAL $2F3C, $4, $8, $7000, $A82A;
  74.     (*$END*)
  75. PROCEDURE ClockStartStopChanged*(aClock: Components.ComponentInstance; cb: Movies.QTCallBack; startChanged: BOOLEAN; stopChanged: BOOLEAN): Components.ComponentResult;
  76.     (*$IF NOT GENERATINGCFM*)
  77.     INLINE PASCAL $2F3C, $8, $9, $7000, $A82A;
  78.     (*$END*)
  79. PROCEDURE ClockGetRate*(aClock: Components.ComponentInstance; VAR rate: Types.Fixed): Components.ComponentResult;
  80.     (*$IF NOT GENERATINGCFM*)
  81.     INLINE PASCAL $2F3C, $4, $A, $7000, $A82A;
  82.     (*$END*)
  83.  
  84. CONST
  85.     kClockGetTimeSelect*            = $1;
  86.     kClockNewCallBackSelect*        = $2;
  87.     kClockDisposeCallBackSelect*    = $3;
  88.     kClockCallMeWhenSelect*        = $4;
  89.     kClockCancelCallBackSelect*    = $5;
  90.     kClockRateChangedSelect*        = $6;
  91.     kClockTimeChangedSelect*        = $7;
  92.     kClockSetTimeBaseSelect*        = $8;
  93.     kClockStartStopChangedSelect* = $9;
  94.     kClockGetRateSelect*            = $A;
  95.  
  96. (*
  97.     General Sequence Grab stuff
  98. *)
  99.     
  100. TYPE
  101.     SeqGrabComponent* = Components.ComponentInstance;
  102.  
  103.     SGChannel* = Components.ComponentInstance;
  104.  
  105.  
  106. CONST
  107.     SeqGrabComponentType*        = LONG("barg");
  108.     SeqGrabChannelType*            = LONG("sgch");
  109.     SeqGrabPanelType*            = LONG("sgpn");
  110.     SeqGrabCompressionPanelType*    = LONG("comp");
  111.     SeqGrabSourcePanelType*        = LONG("sour");
  112.  
  113.     seqGrabToDisk*                = 1;
  114.     seqGrabToMemory*                = 2;
  115.     seqGrabDontUseTempMemory*    = 4;
  116.     seqGrabAppendToFile*            = 8;
  117.     seqGrabDontAddMovieResource*    = 16;
  118.     seqGrabDontMakeMovie*        = 32;
  119.     seqGrabPreExtendFile*        = 64;
  120.     seqGrabDataProcIsInterruptSafe* = 128;
  121.     seqGrabDataProcDoesOverlappingReads* = 256;
  122.  
  123.     
  124. TYPE
  125.     SeqGrabDataOutputEnum* = LONGINT;
  126.  
  127.  
  128. CONST
  129.     seqGrabRecord*                = 1;
  130.     seqGrabPreview*                = 2;
  131.     seqGrabPlayDuringRecord*        = 4;
  132.  
  133.     
  134. TYPE
  135.     SeqGrabUsageEnum* = LONGINT;
  136.  
  137.  
  138. CONST
  139.     seqGrabHasBounds*            = 1;
  140.     seqGrabHasVolume*            = 2;
  141.     seqGrabHasDiscreteSamples*    = 4;
  142.  
  143.     
  144. TYPE
  145.     SeqGrabChannelInfoEnum* = LONGINT;
  146.  
  147.     SeqGrabFrameInfo* = RECORD
  148.         frameOffset*:            LONGINT;
  149.         frameTime*:                LONGINT;
  150.         frameSize*:                LONGINT;
  151.         frameChannel*:            SGChannel;
  152.         frameRefCon*:            LONGINT;
  153.     END;
  154.  
  155.     SeqGrabFrameInfoPtr* = POINTER TO SeqGrabFrameInfo;
  156.  
  157.  
  158. CONST
  159.     grabPictOffScreen*            = 1;
  160.     grabPictIgnoreClip*            = 2;
  161.     grabPictCurrentImage*        = 4;
  162.  
  163.     sgFlagControlledGrab*        = ASH(1,0);
  164.  
  165. TYPE
  166.     SGDataProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (c: SGChannel; p: Types.Ptr; len: LONGINT; VAR offset: LONGINT; chRefCon: LONGINT; time: Movies.TimeValue; writeType: INTEGER; refCon: LONGINT): Types.OSErr;
  167.     SGDataUPP* = Types.UniversalProcPtr;
  168.  
  169.     SGDeviceName* = RECORD
  170.         name*:                    Types.Str63;
  171.         icon*:                    Types.Handle;
  172.         flags*:                    LONGINT;
  173.         refCon*:                    LONGINT;
  174.         reserved*:                LONGINT;                                (* zero*)
  175.     END;
  176.  
  177.  
  178. CONST
  179.     sgDeviceNameFlagDeviceUnavailable* = ASH(1,0);
  180.  
  181.  
  182. TYPE
  183.     SGDeviceListRecord* = RECORD
  184.         count*:                    INTEGER;
  185.         selectedIndex*:            INTEGER;
  186.         reserved*:                LONGINT;                                (* zero*)
  187.         entry*:                    ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF SGDeviceName;
  188.     END;
  189.  
  190.     SGDeviceListPtr* = POINTER TO SGDeviceListRecord;
  191.     SGDeviceList* = HANDLE TO SGDeviceListRecord (*ΔΔ POINTER TO SGDeviceListPtr*);
  192.  
  193.  
  194. CONST
  195.     sgDeviceListWithIcons*        = ASH(1,0);
  196.     sgDeviceListDontCheckAvailability* = ASH(1,1);
  197.  
  198.     seqGrabWriteAppend*            = 0;
  199.     seqGrabWriteReserve*            = 1;
  200.     seqGrabWriteFill*            = 2;
  201.  
  202.     seqGrabUnpause*                = 0;
  203.     seqGrabPause*                = 1;
  204.     seqGrabPauseForMenu*            = 3;
  205.  
  206.     channelFlagDontOpenResFile*    = 2;
  207.     channelFlagHasDependency*    = 4;
  208.  
  209. TYPE
  210.     SGModalFilterProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (theDialog: Dialogs.DialogPtr; VAR theEvent: Events.EventRecord; VAR itemHit: INTEGER; refCon: LONGINT): BOOLEAN;
  211.     SGModalFilterUPP* = Types.UniversalProcPtr;
  212.  
  213.  
  214. CONST
  215.     sgPanelFlagForPanel*            = 1;
  216.  
  217.  
  218. TYPE
  219.     SGOutputRecord* = RECORD
  220.         data*:                    ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF LONGINT;
  221.     END;
  222.  
  223.     SGOutput* = POINTER TO SGOutputRecord;
  224.  
  225.  
  226. CONST
  227.     channelPlayNormal*            = 0;
  228.     channelPlayFast*                = 1;
  229.     channelPlayHighQuality*        = 2;
  230.     channelPlayAllData*            = 4;
  231.  
  232.  
  233. PROCEDURE SGInitialize*(s: SeqGrabComponent): Components.ComponentResult;
  234.     (*$IF NOT GENERATINGCFM*)
  235.     INLINE PASCAL $2F3C, 0, $1, $7000, $A82A;
  236.     (*$END*)
  237. PROCEDURE SGSetDataOutput*(s: SeqGrabComponent; (*CONST*)VAR movieFile: Files.FSSpec; whereFlags: LONGINT): Components.ComponentResult;
  238.     (*$IF NOT GENERATINGCFM*)
  239.     INLINE PASCAL $2F3C, $8, $2, $7000, $A82A;
  240.     (*$END*)
  241. PROCEDURE SGGetDataOutput*(s: SeqGrabComponent; VAR movieFile: Files.FSSpec; VAR whereFlags: LONGINT): Components.ComponentResult;
  242.     (*$IF NOT GENERATINGCFM*)
  243.     INLINE PASCAL $2F3C, $8, $3, $7000, $A82A;
  244.     (*$END*)
  245. PROCEDURE SGSetGWorld*(s: SeqGrabComponent; gp: Quickdraw.CGrafPtr; gd: Quickdraw.GDHandle): Components.ComponentResult;
  246.     (*$IF NOT GENERATINGCFM*)
  247.     INLINE PASCAL $2F3C, $8, $4, $7000, $A82A;
  248.     (*$END*)
  249. PROCEDURE SGGetGWorld*(s: SeqGrabComponent; VAR gp: Quickdraw.CGrafPtr; VAR gd: Quickdraw.GDHandle): Components.ComponentResult;
  250.     (*$IF NOT GENERATINGCFM*)
  251.     INLINE PASCAL $2F3C, $8, $5, $7000, $A82A;
  252.     (*$END*)
  253. PROCEDURE SGNewChannel*(s: SeqGrabComponent; channelType: Types.OSType; VAR ref: SGChannel): Components.ComponentResult;
  254.     (*$IF NOT GENERATINGCFM*)
  255.     INLINE PASCAL $2F3C, $8, $6, $7000, $A82A;
  256.     (*$END*)
  257. PROCEDURE SGDisposeChannel*(s: SeqGrabComponent; c: SGChannel): Components.ComponentResult;
  258.     (*$IF NOT GENERATINGCFM*)
  259.     INLINE PASCAL $2F3C, $4, $7, $7000, $A82A;
  260.     (*$END*)
  261. PROCEDURE SGStartPreview*(s: SeqGrabComponent): Components.ComponentResult;
  262.     (*$IF NOT GENERATINGCFM*)
  263.     INLINE PASCAL $2F3C, 0, $10, $7000, $A82A;
  264.     (*$END*)
  265. PROCEDURE SGStartRecord*(s: SeqGrabComponent): Components.ComponentResult;
  266.     (*$IF NOT GENERATINGCFM*)
  267.     INLINE PASCAL $2F3C, 0, $11, $7000, $A82A;
  268.     (*$END*)
  269. PROCEDURE SGIdle*(s: SeqGrabComponent): Components.ComponentResult;
  270.     (*$IF NOT GENERATINGCFM*)
  271.     INLINE PASCAL $2F3C, 0, $12, $7000, $A82A;
  272.     (*$END*)
  273. PROCEDURE SGStop*(s: SeqGrabComponent): Components.ComponentResult;
  274.     (*$IF NOT GENERATINGCFM*)
  275.     INLINE PASCAL $2F3C, 0, $13, $7000, $A82A;
  276.     (*$END*)
  277. PROCEDURE SGPause*(s: SeqGrabComponent; pause: Types.ByteParameter): Components.ComponentResult;
  278.     (*$IF NOT GENERATINGCFM*)
  279.     INLINE PASCAL $2F3C, $2, $14, $7000, $A82A;
  280.     (*$END*)
  281. PROCEDURE SGPrepare*(s: SeqGrabComponent; prepareForPreview: BOOLEAN; prepareForRecord: BOOLEAN): Components.ComponentResult;
  282.     (*$IF NOT GENERATINGCFM*)
  283.     INLINE PASCAL $2F3C, $4, $15, $7000, $A82A;
  284.     (*$END*)
  285. PROCEDURE SGRelease*(s: SeqGrabComponent): Components.ComponentResult;
  286.     (*$IF NOT GENERATINGCFM*)
  287.     INLINE PASCAL $2F3C, 0, $16, $7000, $A82A;
  288.     (*$END*)
  289. PROCEDURE SGGetMovie*(s: SeqGrabComponent): Movies.Movie;
  290.     (*$IF NOT GENERATINGCFM*)
  291.     INLINE PASCAL $2F3C, 0, $17, $7000, $A82A;
  292.     (*$END*)
  293. PROCEDURE SGSetMaximumRecordTime*(s: SeqGrabComponent; ticks: LONGINT): Components.ComponentResult;
  294.     (*$IF NOT GENERATINGCFM*)
  295.     INLINE PASCAL $2F3C, $4, $18, $7000, $A82A;
  296.     (*$END*)
  297. PROCEDURE SGGetMaximumRecordTime*(s: SeqGrabComponent; VAR ticks: LONGINT): Components.ComponentResult;
  298.     (*$IF NOT GENERATINGCFM*)
  299.     INLINE PASCAL $2F3C, $4, $19, $7000, $A82A;
  300.     (*$END*)
  301. PROCEDURE SGGetStorageSpaceRemaining*(s: SeqGrabComponent; VAR bytes: LONGINT): Components.ComponentResult;
  302.     (*$IF NOT GENERATINGCFM*)
  303.     INLINE PASCAL $2F3C, $4, $1A, $7000, $A82A;
  304.     (*$END*)
  305. PROCEDURE SGGetTimeRemaining*(s: SeqGrabComponent; VAR ticksLeft: LONGINT): Components.ComponentResult;
  306.     (*$IF NOT GENERATINGCFM*)
  307.     INLINE PASCAL $2F3C, $4, $1B, $7000, $A82A;
  308.     (*$END*)
  309. PROCEDURE SGGrabPict*(s: SeqGrabComponent; VAR p: Quickdraw.PicHandle; (*CONST*)VAR bounds: Types.Rect; offscreenDepth: INTEGER; grabPictFlags: LONGINT): Components.ComponentResult;
  310.     (*$IF NOT GENERATINGCFM*)
  311.     INLINE PASCAL $2F3C, $E, $1C, $7000, $A82A;
  312.     (*$END*)
  313. PROCEDURE SGGetLastMovieResID*(s: SeqGrabComponent; VAR resID: INTEGER): Components.ComponentResult;
  314.     (*$IF NOT GENERATINGCFM*)
  315.     INLINE PASCAL $2F3C, $4, $1D, $7000, $A82A;
  316.     (*$END*)
  317. PROCEDURE SGSetFlags*(s: SeqGrabComponent; sgFlags: LONGINT): Components.ComponentResult;
  318.     (*$IF NOT GENERATINGCFM*)
  319.     INLINE PASCAL $2F3C, $4, $1E, $7000, $A82A;
  320.     (*$END*)
  321. PROCEDURE SGGetFlags*(s: SeqGrabComponent; VAR sgFlags: LONGINT): Components.ComponentResult;
  322.     (*$IF NOT GENERATINGCFM*)
  323.     INLINE PASCAL $2F3C, $4, $1F, $7000, $A82A;
  324.     (*$END*)
  325. PROCEDURE SGSetDataProc*(s: SeqGrabComponent; proc: SGDataUPP; refCon: LONGINT): Components.ComponentResult;
  326.     (*$IF NOT GENERATINGCFM*)
  327.     INLINE PASCAL $2F3C, $8, $20, $7000, $A82A;
  328.     (*$END*)
  329. PROCEDURE SGNewChannelFromComponent*(s: SeqGrabComponent; VAR newChannel: SGChannel; sgChannelComponent: Components.Component): Components.ComponentResult;
  330.     (*$IF NOT GENERATINGCFM*)
  331.     INLINE PASCAL $2F3C, $8, $21, $7000, $A82A;
  332.     (*$END*)
  333. PROCEDURE SGDisposeDeviceList*(s: SeqGrabComponent; list: SGDeviceList): Components.ComponentResult;
  334.     (*$IF NOT GENERATINGCFM*)
  335.     INLINE PASCAL $2F3C, $4, $22, $7000, $A82A;
  336.     (*$END*)
  337. PROCEDURE SGAppendDeviceListToMenu*(s: SeqGrabComponent; list: SGDeviceList; mh: Menus.MenuHandle): Components.ComponentResult;
  338.     (*$IF NOT GENERATINGCFM*)
  339.     INLINE PASCAL $2F3C, $8, $23, $7000, $A82A;
  340.     (*$END*)
  341. PROCEDURE SGSetSettings*(s: SeqGrabComponent; ud: Movies.UserData; flags: LONGINT): Components.ComponentResult;
  342.     (*$IF NOT GENERATINGCFM*)
  343.     INLINE PASCAL $2F3C, $8, $24, $7000, $A82A;
  344.     (*$END*)
  345. PROCEDURE SGGetSettings*(s: SeqGrabComponent; VAR ud: Movies.UserData; flags: LONGINT): Components.ComponentResult;
  346.     (*$IF NOT GENERATINGCFM*)
  347.     INLINE PASCAL $2F3C, $8, $25, $7000, $A82A;
  348.     (*$END*)
  349. PROCEDURE SGGetIndChannel*(s: SeqGrabComponent; index: INTEGER; VAR ref: SGChannel; VAR chanType: Types.OSType): Components.ComponentResult;
  350.     (*$IF NOT GENERATINGCFM*)
  351.     INLINE PASCAL $2F3C, $A, $26, $7000, $A82A;
  352.     (*$END*)
  353. PROCEDURE SGUpdate*(s: SeqGrabComponent; updateRgn: Quickdraw.RgnHandle): Components.ComponentResult;
  354.     (*$IF NOT GENERATINGCFM*)
  355.     INLINE PASCAL $2F3C, $4, $27, $7000, $A82A;
  356.     (*$END*)
  357. PROCEDURE SGGetPause*(s: SeqGrabComponent; VAR paused: Types.Byte): Components.ComponentResult;
  358.     (*$IF NOT GENERATINGCFM*)
  359.     INLINE PASCAL $2F3C, $4, $28, $7000, $A82A;
  360.     (*$END*)
  361. PROCEDURE SGSettingsDialog*(s: SeqGrabComponent; c: SGChannel; numPanels: INTEGER; VAR panelList: Components.Component; flags: LONGINT; proc: SGModalFilterUPP; procRefNum: LONGINT): Components.ComponentResult;
  362.     (*$IF NOT GENERATINGCFM*)
  363.     INLINE PASCAL $2F3C, $16, $29, $7000, $A82A;
  364.     (*$END*)
  365. PROCEDURE SGGetAlignmentProc*(s: SeqGrabComponent; alignmentProc: ImageCompression.ICMAlignmentProcRecordPtr): Components.ComponentResult;
  366.     (*$IF NOT GENERATINGCFM*)
  367.     INLINE PASCAL $2F3C, $4, $2A, $7000, $A82A;
  368.     (*$END*)
  369. PROCEDURE SGSetChannelSettings*(s: SeqGrabComponent; c: SGChannel; ud: Movies.UserData; flags: LONGINT): Components.ComponentResult;
  370.     (*$IF NOT GENERATINGCFM*)
  371.     INLINE PASCAL $2F3C, $C, $2B, $7000, $A82A;
  372.     (*$END*)
  373. PROCEDURE SGGetChannelSettings*(s: SeqGrabComponent; c: SGChannel; VAR ud: Movies.UserData; flags: LONGINT): Components.ComponentResult;
  374.     (*$IF NOT GENERATINGCFM*)
  375.     INLINE PASCAL $2F3C, $C, $2C, $7000, $A82A;
  376.     (*$END*)
  377. PROCEDURE SGGetMode*(s: SeqGrabComponent; VAR previewMode: BOOLEAN; VAR recordMode: BOOLEAN): Components.ComponentResult;
  378.     (*$IF NOT GENERATINGCFM*)
  379.     INLINE PASCAL $2F3C, $8, $2D, $7000, $A82A;
  380.     (*$END*)
  381. PROCEDURE SGSetDataRef*(s: SeqGrabComponent; dataRef: Types.Handle; dataRefType: Types.OSType; whereFlags: LONGINT): Components.ComponentResult;
  382.     (*$IF NOT GENERATINGCFM*)
  383.     INLINE PASCAL $2F3C, $C, $2E, $7000, $A82A;
  384.     (*$END*)
  385. PROCEDURE SGGetDataRef*(s: SeqGrabComponent; VAR dataRef: Types.Handle; VAR dataRefType: Types.OSType; VAR whereFlags: LONGINT): Components.ComponentResult;
  386.     (*$IF NOT GENERATINGCFM*)
  387.     INLINE PASCAL $2F3C, $C, $2F, $7000, $A82A;
  388.     (*$END*)
  389. PROCEDURE SGNewOutput*(s: SeqGrabComponent; dataRef: Types.Handle; dataRefType: Types.OSType; whereFlags: LONGINT; VAR output: SGOutput): Components.ComponentResult;
  390.     (*$IF NOT GENERATINGCFM*)
  391.     INLINE PASCAL $2F3C, $10, $30, $7000, $A82A;
  392.     (*$END*)
  393. PROCEDURE SGDisposeOutput*(s: SeqGrabComponent; output: SGOutput): Components.ComponentResult;
  394.     (*$IF NOT GENERATINGCFM*)
  395.     INLINE PASCAL $2F3C, $4, $31, $7000, $A82A;
  396.     (*$END*)
  397. PROCEDURE SGSetOutputFlags*(s: SeqGrabComponent; output: SGOutput; whereFlags: LONGINT): Components.ComponentResult;
  398.     (*$IF NOT GENERATINGCFM*)
  399.     INLINE PASCAL $2F3C, $8, $32, $7000, $A82A;
  400.     (*$END*)
  401. PROCEDURE SGSetChannelOutput*(s: SeqGrabComponent; c: SGChannel; output: SGOutput): Components.ComponentResult;
  402.     (*$IF NOT GENERATINGCFM*)
  403.     INLINE PASCAL $2F3C, $8, $33, $7000, $A82A;
  404.     (*$END*)
  405. PROCEDURE SGGetDataOutputStorageSpaceRemaining*(s: SeqGrabComponent; output: SGOutput; VAR space: LONGINT): Components.ComponentResult;
  406.     (*$IF NOT GENERATINGCFM*)
  407.     INLINE PASCAL $2F3C, $8, $34, $7000, $A82A;
  408.     (*$END*)
  409. (*
  410.     calls from Channel to seqGrab
  411. *)
  412. PROCEDURE SGWriteMovieData*(s: SeqGrabComponent; c: SGChannel; p: Types.Ptr; len: LONGINT; VAR offset: LONGINT): Components.ComponentResult;
  413.     (*$IF NOT GENERATINGCFM*)
  414.     INLINE PASCAL $2F3C, $10, $100, $7000, $A82A;
  415.     (*$END*)
  416. PROCEDURE SGAddFrameReference*(s: SeqGrabComponent; frameInfo: SeqGrabFrameInfoPtr): Components.ComponentResult;
  417.     (*$IF NOT GENERATINGCFM*)
  418.     INLINE PASCAL $2F3C, $4, $101, $7000, $A82A;
  419.     (*$END*)
  420. PROCEDURE SGGetNextFrameReference*(s: SeqGrabComponent; frameInfo: SeqGrabFrameInfoPtr; VAR frameDuration: Movies.TimeValue; VAR frameNumber: LONGINT): Components.ComponentResult;
  421.     (*$IF NOT GENERATINGCFM*)
  422.     INLINE PASCAL $2F3C, $C, $102, $7000, $A82A;
  423.     (*$END*)
  424. PROCEDURE SGGetTimeBase*(s: SeqGrabComponent; VAR tb: Movies.TimeBase): Components.ComponentResult;
  425.     (*$IF NOT GENERATINGCFM*)
  426.     INLINE PASCAL $2F3C, $4, $103, $7000, $A82A;
  427.     (*$END*)
  428. PROCEDURE SGSortDeviceList*(s: SeqGrabComponent; list: SGDeviceList): Components.ComponentResult;
  429.     (*$IF NOT GENERATINGCFM*)
  430.     INLINE PASCAL $2F3C, $4, $104, $7000, $A82A;
  431.     (*$END*)
  432. PROCEDURE SGAddMovieData*(s: SeqGrabComponent; c: SGChannel; p: Types.Ptr; len: LONGINT; VAR offset: LONGINT; chRefCon: LONGINT; time: Movies.TimeValue; writeType: INTEGER): Components.ComponentResult;
  433.     (*$IF NOT GENERATINGCFM*)
  434.     INLINE PASCAL $2F3C, $1A, $105, $7000, $A82A;
  435.     (*$END*)
  436. PROCEDURE SGChangedSource*(s: SeqGrabComponent; c: SGChannel): Components.ComponentResult;
  437.     (*$IF NOT GENERATINGCFM*)
  438.     INLINE PASCAL $2F3C, $4, $106, $7000, $A82A;
  439.     (*$END*)
  440. (*** Sequence Grab CHANNEL Components.Component Stuff ***)
  441. PROCEDURE SGSetChannelUsage*(c: SGChannel; usage: LONGINT): Components.ComponentResult;
  442.     (*$IF NOT GENERATINGCFM*)
  443.     INLINE PASCAL $2F3C, $4, $80, $7000, $A82A;
  444.     (*$END*)
  445. PROCEDURE SGGetChannelUsage*(c: SGChannel; VAR usage: LONGINT): Components.ComponentResult;
  446.     (*$IF NOT GENERATINGCFM*)
  447.     INLINE PASCAL $2F3C, $4, $81, $7000, $A82A;
  448.     (*$END*)
  449. PROCEDURE SGSetChannelBounds*(c: SGChannel; (*CONST*)VAR bounds: Types.Rect): Components.ComponentResult;
  450.     (*$IF NOT GENERATINGCFM*)
  451.     INLINE PASCAL $2F3C, $4, $82, $7000, $A82A;
  452.     (*$END*)
  453. PROCEDURE SGGetChannelBounds*(c: SGChannel; VAR bounds: Types.Rect): Components.ComponentResult;
  454.     (*$IF NOT GENERATINGCFM*)
  455.     INLINE PASCAL $2F3C, $4, $83, $7000, $A82A;
  456.     (*$END*)
  457. PROCEDURE SGSetChannelVolume*(c: SGChannel; volume: INTEGER): Components.ComponentResult;
  458.     (*$IF NOT GENERATINGCFM*)
  459.     INLINE PASCAL $2F3C, $2, $84, $7000, $A82A;
  460.     (*$END*)
  461. PROCEDURE SGGetChannelVolume*(c: SGChannel; VAR volume: INTEGER): Components.ComponentResult;
  462.     (*$IF NOT GENERATINGCFM*)
  463.     INLINE PASCAL $2F3C, $4, $85, $7000, $A82A;
  464.     (*$END*)
  465. PROCEDURE SGGetChannelInfo*(c: SGChannel; VAR channelInfo: LONGINT): Components.ComponentResult;
  466.     (*$IF NOT GENERATINGCFM*)
  467.     INLINE PASCAL $2F3C, $4, $86, $7000, $A82A;
  468.     (*$END*)
  469. PROCEDURE SGSetChannelPlayFlags*(c: SGChannel; playFlags: LONGINT): Components.ComponentResult;
  470.     (*$IF NOT GENERATINGCFM*)
  471.     INLINE PASCAL $2F3C, $4, $87, $7000, $A82A;
  472.     (*$END*)
  473. PROCEDURE SGGetChannelPlayFlags*(c: SGChannel; VAR playFlags: LONGINT): Components.ComponentResult;
  474.     (*$IF NOT GENERATINGCFM*)
  475.     INLINE PASCAL $2F3C, $4, $88, $7000, $A82A;
  476.     (*$END*)
  477. PROCEDURE SGSetChannelMaxFrames*(c: SGChannel; frameCount: LONGINT): Components.ComponentResult;
  478.     (*$IF NOT GENERATINGCFM*)
  479.     INLINE PASCAL $2F3C, $4, $89, $7000, $A82A;
  480.     (*$END*)
  481. PROCEDURE SGGetChannelMaxFrames*(c: SGChannel; VAR frameCount: LONGINT): Components.ComponentResult;
  482.     (*$IF NOT GENERATINGCFM*)
  483.     INLINE PASCAL $2F3C, $4, $8A, $7000, $A82A;
  484.     (*$END*)
  485. PROCEDURE SGSetChannelRefCon*(c: SGChannel; refCon: LONGINT): Components.ComponentResult;
  486.     (*$IF NOT GENERATINGCFM*)
  487.     INLINE PASCAL $2F3C, $4, $8B, $7000, $A82A;
  488.     (*$END*)
  489. PROCEDURE SGSetChannelClip*(c: SGChannel; theClip: Quickdraw.RgnHandle): Components.ComponentResult;
  490.     (*$IF NOT GENERATINGCFM*)
  491.     INLINE PASCAL $2F3C, $4, $8C, $7000, $A82A;
  492.     (*$END*)
  493. PROCEDURE SGGetChannelClip*(c: SGChannel; VAR theClip: Quickdraw.RgnHandle): Components.ComponentResult;
  494.     (*$IF NOT GENERATINGCFM*)
  495.     INLINE PASCAL $2F3C, $4, $8D, $7000, $A82A;
  496.     (*$END*)
  497. PROCEDURE SGGetChannelSampleDescription*(c: SGChannel; sampleDesc: Types.Handle): Components.ComponentResult;
  498.     (*$IF NOT GENERATINGCFM*)
  499.     INLINE PASCAL $2F3C, $4, $8E, $7000, $A82A;
  500.     (*$END*)
  501. PROCEDURE SGGetChannelDeviceList*(c: SGChannel; selectionFlags: LONGINT; VAR list: SGDeviceList): Components.ComponentResult;
  502.     (*$IF NOT GENERATINGCFM*)
  503.     INLINE PASCAL $2F3C, $8, $8F, $7000, $A82A;
  504.     (*$END*)
  505. PROCEDURE SGSetChannelDevice*(c: SGChannel; name: Types.StringPtr): Components.ComponentResult;
  506.     (*$IF NOT GENERATINGCFM*)
  507.     INLINE PASCAL $2F3C, $4, $90, $7000, $A82A;
  508.     (*$END*)
  509. PROCEDURE SGSetChannelMatrix*(c: SGChannel; (*CONST*)VAR m: ImageCompression.MatrixRecord): Components.ComponentResult;
  510.     (*$IF NOT GENERATINGCFM*)
  511.     INLINE PASCAL $2F3C, $4, $91, $7000, $A82A;
  512.     (*$END*)
  513. PROCEDURE SGGetChannelMatrix*(c: SGChannel; VAR m: ImageCompression.MatrixRecord): Components.ComponentResult;
  514.     (*$IF NOT GENERATINGCFM*)
  515.     INLINE PASCAL $2F3C, $4, $92, $7000, $A82A;
  516.     (*$END*)
  517. PROCEDURE SGGetChannelTimeScale*(c: SGChannel; VAR scale: Movies.TimeScale): Components.ComponentResult;
  518.     (*$IF NOT GENERATINGCFM*)
  519.     INLINE PASCAL $2F3C, $4, $93, $7000, $A82A;
  520.     (*$END*)
  521. PROCEDURE SGChannelPutPicture*(c: SGChannel): Components.ComponentResult;
  522.     (*$IF NOT GENERATINGCFM*)
  523.     INLINE PASCAL $2F3C, 0, $94, $7000, $A82A;
  524.     (*$END*)
  525. PROCEDURE SGChannelSetRequestedDataRate*(c: SGChannel; bytesPerSecond: LONGINT): Components.ComponentResult;
  526.     (*$IF NOT GENERATINGCFM*)
  527.     INLINE PASCAL $2F3C, $4, $95, $7000, $A82A;
  528.     (*$END*)
  529. PROCEDURE SGChannelGetRequestedDataRate*(c: SGChannel; VAR bytesPerSecond: LONGINT): Components.ComponentResult;
  530.     (*$IF NOT GENERATINGCFM*)
  531.     INLINE PASCAL $2F3C, $4, $96, $7000, $A82A;
  532.     (*$END*)
  533. PROCEDURE SGChannelSetDataSourceName*(c: SGChannel; name: Types.ConstStr255Param; scriptTag: Types.ScriptCode): Components.ComponentResult;
  534.     (*$IF NOT GENERATINGCFM*)
  535.     INLINE PASCAL $2F3C, $6, $97, $7000, $A82A;
  536.     (*$END*)
  537. PROCEDURE SGChannelGetDataSourceName*(c: SGChannel; VAR name: Types.Str255; VAR scriptTag: Types.ScriptCode): Components.ComponentResult;
  538.     (*$IF NOT GENERATINGCFM*)
  539.     INLINE PASCAL $2F3C, $8, $98, $7000, $A82A;
  540.     (*$END*)
  541. (*
  542.     calls from seqGrab to Channel
  543. *)
  544. PROCEDURE SGInitChannel*(c: SGChannel; owner: SeqGrabComponent): Components.ComponentResult;
  545.     (*$IF NOT GENERATINGCFM*)
  546.     INLINE PASCAL $2F3C, $4, $180, $7000, $A82A;
  547.     (*$END*)
  548. PROCEDURE SGWriteSamples*(c: SGChannel; m: Movies.Movie; theFile: Aliases.AliasHandle): Components.ComponentResult;
  549.     (*$IF NOT GENERATINGCFM*)
  550.     INLINE PASCAL $2F3C, $8, $181, $7000, $A82A;
  551.     (*$END*)
  552. PROCEDURE SGGetDataRate*(c: SGChannel; VAR bytesPerSecond: LONGINT): Components.ComponentResult;
  553.     (*$IF NOT GENERATINGCFM*)
  554.     INLINE PASCAL $2F3C, $4, $182, $7000, $A82A;
  555.     (*$END*)
  556. PROCEDURE SGAlignChannelRect*(c: SGChannel; VAR r: Types.Rect): Components.ComponentResult;
  557.     (*$IF NOT GENERATINGCFM*)
  558.     INLINE PASCAL $2F3C, $4, $183, $7000, $A82A;
  559.     (*$END*)
  560. (*
  561.     Dorky dialog panel calls
  562. *)
  563. PROCEDURE SGPanelGetDitl*(s: SeqGrabComponent; VAR ditl: Types.Handle): Components.ComponentResult;
  564.     (*$IF NOT GENERATINGCFM*)
  565.     INLINE PASCAL $2F3C, $4, $200, $7000, $A82A;
  566.     (*$END*)
  567. PROCEDURE SGPanelGetTitle*(s: SeqGrabComponent; VAR title: Types.Str255): Components.ComponentResult;
  568.     (*$IF NOT GENERATINGCFM*)
  569.     INLINE PASCAL $2F3C, $4, $201, $7000, $A82A;
  570.     (*$END*)
  571. PROCEDURE SGPanelCanRun*(s: SeqGrabComponent; c: SGChannel): Components.ComponentResult;
  572.     (*$IF NOT GENERATINGCFM*)
  573.     INLINE PASCAL $2F3C, $4, $202, $7000, $A82A;
  574.     (*$END*)
  575. PROCEDURE SGPanelInstall*(s: SeqGrabComponent; c: SGChannel; d: Dialogs.DialogPtr; itemOffset: INTEGER): Components.ComponentResult;
  576.     (*$IF NOT GENERATINGCFM*)
  577.     INLINE PASCAL $2F3C, $A, $203, $7000, $A82A;
  578.     (*$END*)
  579. PROCEDURE SGPanelEvent*(s: SeqGrabComponent; c: SGChannel; d: Dialogs.DialogPtr; itemOffset: INTEGER; VAR theEvent: Events.EventRecord; VAR itemHit: INTEGER; VAR handled: BOOLEAN): Components.ComponentResult;
  580.     (*$IF NOT GENERATINGCFM*)
  581.     INLINE PASCAL $2F3C, $16, $204, $7000, $A82A;
  582.     (*$END*)
  583. PROCEDURE SGPanelItem*(s: SeqGrabComponent; c: SGChannel; d: Dialogs.DialogPtr; itemOffset: INTEGER; itemNum: INTEGER): Components.ComponentResult;
  584.     (*$IF NOT GENERATINGCFM*)
  585.     INLINE PASCAL $2F3C, $C, $205, $7000, $A82A;
  586.     (*$END*)
  587. PROCEDURE SGPanelRemove*(s: SeqGrabComponent; c: SGChannel; d: Dialogs.DialogPtr; itemOffset: INTEGER): Components.ComponentResult;
  588.     (*$IF NOT GENERATINGCFM*)
  589.     INLINE PASCAL $2F3C, $A, $206, $7000, $A82A;
  590.     (*$END*)
  591. PROCEDURE SGPanelSetGrabber*(s: SeqGrabComponent; sg: SeqGrabComponent): Components.ComponentResult;
  592.     (*$IF NOT GENERATINGCFM*)
  593.     INLINE PASCAL $2F3C, $4, $207, $7000, $A82A;
  594.     (*$END*)
  595. PROCEDURE SGPanelSetResFile*(s: SeqGrabComponent; resRef: INTEGER): Components.ComponentResult;
  596.     (*$IF NOT GENERATINGCFM*)
  597.     INLINE PASCAL $2F3C, $2, $208, $7000, $A82A;
  598.     (*$END*)
  599. PROCEDURE SGPanelGetSettings*(s: SeqGrabComponent; c: SGChannel; VAR ud: Movies.UserData; flags: LONGINT): Components.ComponentResult;
  600.     (*$IF NOT GENERATINGCFM*)
  601.     INLINE PASCAL $2F3C, $C, $209, $7000, $A82A;
  602.     (*$END*)
  603. PROCEDURE SGPanelSetSettings*(s: SeqGrabComponent; c: SGChannel; ud: Movies.UserData; flags: LONGINT): Components.ComponentResult;
  604.     (*$IF NOT GENERATINGCFM*)
  605.     INLINE PASCAL $2F3C, $C, $20A, $7000, $A82A;
  606.     (*$END*)
  607. PROCEDURE SGPanelValidateInput*(s: SeqGrabComponent; VAR ok: BOOLEAN): Components.ComponentResult;
  608.     (*$IF NOT GENERATINGCFM*)
  609.     INLINE PASCAL $2F3C, $4, $20B, $7000, $A82A;
  610.     (*$END*)
  611. PROCEDURE SGPanelSetEventFilter*(s: SeqGrabComponent; proc: SGModalFilterUPP; refCon: LONGINT): Components.ComponentResult;
  612.     (*$IF NOT GENERATINGCFM*)
  613.     INLINE PASCAL $2F3C, $8, $20C, $7000, $A82A;
  614.     (*$END*)
  615. (*** Sequence Grab VIDEO CHANNEL Components.Component Stuff ***)
  616. (*
  617.     Video stuff
  618. *)
  619.  
  620. TYPE
  621.     SGCompressInfo* = RECORD
  622.         buffer*:                    Types.Ptr;
  623.         bufferSize*:                LONGINT;
  624.         similarity*:                Types.SInt8; (* UInt8 *)
  625.         reserved*:                Types.SInt8; (* UInt8 *)
  626.     END;
  627.  
  628.     SGGrabProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (c: SGChannel; bufferNum: INTEGER; refCon: LONGINT): Components.ComponentResult;
  629.     SGGrabCompleteProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (c: SGChannel; bufferNum: INTEGER; VAR done: BOOLEAN; refCon: LONGINT): Components.ComponentResult;
  630.     SGDisplayProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (c: SGChannel; bufferNum: INTEGER; VAR mp: ImageCompression.MatrixRecord; clipRgn: Quickdraw.RgnHandle; refCon: LONGINT): Components.ComponentResult;
  631.     SGCompressProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (c: SGChannel; bufferNum: INTEGER; refCon: LONGINT): Components.ComponentResult;
  632.     SGCompressCompleteProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (c: SGChannel; bufferNum: INTEGER; VAR done: BOOLEAN; VAR ci: SGCompressInfo; refCon: LONGINT): Components.ComponentResult;
  633.     SGAddFrameProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (c: SGChannel; bufferNum: INTEGER; atTime: Movies.TimeValue; scale: Movies.TimeScale; (*CONST*)VAR ci: SGCompressInfo; refCon: LONGINT): Components.ComponentResult;
  634.     SGTransferFrameProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (c: SGChannel; bufferNum: INTEGER; VAR mp: ImageCompression.MatrixRecord; clipRgn: Quickdraw.RgnHandle; refCon: LONGINT): Components.ComponentResult;
  635.     SGGrabCompressCompleteProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (c: SGChannel; VAR done: BOOLEAN; VAR ci: SGCompressInfo; VAR t: Movies.TimeRecord; refCon: LONGINT): Components.ComponentResult;
  636.     SGDisplayCompressProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (c: SGChannel; dataPtr: Types.Ptr; desc: ImageCompression.ImageDescriptionHandle; VAR mp: ImageCompression.MatrixRecord; clipRgn: Quickdraw.RgnHandle; refCon: LONGINT): Components.ComponentResult;
  637.     SGGrabUPP* = Types.UniversalProcPtr;
  638.     SGGrabCompleteUPP* = Types.UniversalProcPtr;
  639.     SGDisplayUPP* = Types.UniversalProcPtr;
  640.     SGCompressUPP* = Types.UniversalProcPtr;
  641.     SGCompressCompleteUPP* = Types.UniversalProcPtr;
  642.     SGAddFrameUPP* = Types.UniversalProcPtr;
  643.     SGTransferFrameUPP* = Types.UniversalProcPtr;
  644.     SGGrabCompressCompleteUPP* = Types.UniversalProcPtr;
  645.     SGDisplayCompressUPP* = Types.UniversalProcPtr;
  646.  
  647.     VideoBottles* = RECORD
  648.         procCount*:                INTEGER;
  649.         grabProc*:                SGGrabUPP;
  650.         grabCompleteProc*:        SGGrabCompleteUPP;
  651.         displayProc*:            SGDisplayUPP;
  652.         compressProc*:            SGCompressUPP;
  653.         compressCompleteProc*:    SGCompressCompleteUPP;
  654.         addFrameProc*:            SGAddFrameUPP;
  655.         transferFrameProc*:        SGTransferFrameUPP;
  656.         grabCompressCompleteProc*: SGGrabCompressCompleteUPP;
  657.         displayCompressProc*:    SGDisplayCompressUPP;
  658.     END;
  659.  
  660.  
  661. PROCEDURE SGGetSrcVideoBounds*(c: SGChannel; VAR r: Types.Rect): Components.ComponentResult;
  662.     (*$IF NOT GENERATINGCFM*)
  663.     INLINE PASCAL $2F3C, $4, $100, $7000, $A82A;
  664.     (*$END*)
  665. PROCEDURE SGSetVideoRect*(c: SGChannel; (*CONST*)VAR r: Types.Rect): Components.ComponentResult;
  666.     (*$IF NOT GENERATINGCFM*)
  667.     INLINE PASCAL $2F3C, $4, $101, $7000, $A82A;
  668.     (*$END*)
  669. PROCEDURE SGGetVideoRect*(c: SGChannel; VAR r: Types.Rect): Components.ComponentResult;
  670.     (*$IF NOT GENERATINGCFM*)
  671.     INLINE PASCAL $2F3C, $4, $102, $7000, $A82A;
  672.     (*$END*)
  673. PROCEDURE SGGetVideoCompressorType*(c: SGChannel; VAR compressorType: Types.OSType): Components.ComponentResult;
  674.     (*$IF NOT GENERATINGCFM*)
  675.     INLINE PASCAL $2F3C, $4, $103, $7000, $A82A;
  676.     (*$END*)
  677. PROCEDURE SGSetVideoCompressorType*(c: SGChannel; compressorType: Types.OSType): Components.ComponentResult;
  678.     (*$IF NOT GENERATINGCFM*)
  679.     INLINE PASCAL $2F3C, $4, $104, $7000, $A82A;
  680.     (*$END*)
  681. PROCEDURE SGSetVideoCompressor*(c: SGChannel; depth: INTEGER; compressor: ImageCompression.CompressorComponent; spatialQuality: ImageCompression.CodecQ; temporalQuality: ImageCompression.CodecQ; keyFrameRate: LONGINT): Components.ComponentResult;
  682.     (*$IF NOT GENERATINGCFM*)
  683.     INLINE PASCAL $2F3C, $12, $105, $7000, $A82A;
  684.     (*$END*)
  685. PROCEDURE SGGetVideoCompressor*(c: SGChannel; VAR depth: INTEGER; VAR compressor: ImageCompression.CompressorComponent; VAR spatialQuality: ImageCompression.CodecQ; VAR temporalQuality: ImageCompression.CodecQ; VAR keyFrameRate: LONGINT): Components.ComponentResult;
  686.     (*$IF NOT GENERATINGCFM*)
  687.     INLINE PASCAL $2F3C, $14, $106, $7000, $A82A;
  688.     (*$END*)
  689. PROCEDURE SGGetVideoDigitizerComponent*(c: SGChannel): Components.ComponentInstance;
  690.     (*$IF NOT GENERATINGCFM*)
  691.     INLINE PASCAL $2F3C, 0, $107, $7000, $A82A;
  692.     (*$END*)
  693. PROCEDURE SGSetVideoDigitizerComponent*(c: SGChannel; vdig: Components.ComponentInstance): Components.ComponentResult;
  694.     (*$IF NOT GENERATINGCFM*)
  695.     INLINE PASCAL $2F3C, $4, $108, $7000, $A82A;
  696.     (*$END*)
  697. PROCEDURE SGVideoDigitizerChanged*(c: SGChannel): Components.ComponentResult;
  698.     (*$IF NOT GENERATINGCFM*)
  699.     INLINE PASCAL $2F3C, 0, $109, $7000, $A82A;
  700.     (*$END*)
  701. PROCEDURE SGSetVideoBottlenecks*(c: SGChannel; VAR vb: VideoBottles): Components.ComponentResult;
  702.     (*$IF NOT GENERATINGCFM*)
  703.     INLINE PASCAL $2F3C, $4, $10A, $7000, $A82A;
  704.     (*$END*)
  705. PROCEDURE SGGetVideoBottlenecks*(c: SGChannel; VAR vb: VideoBottles): Components.ComponentResult;
  706.     (*$IF NOT GENERATINGCFM*)
  707.     INLINE PASCAL $2F3C, $4, $10B, $7000, $A82A;
  708.     (*$END*)
  709. PROCEDURE SGGrabFrame*(c: SGChannel; bufferNum: INTEGER): Components.ComponentResult;
  710.     (*$IF NOT GENERATINGCFM*)
  711.     INLINE PASCAL $2F3C, $2, $10C, $7000, $A82A;
  712.     (*$END*)
  713. PROCEDURE SGGrabFrameComplete*(c: SGChannel; bufferNum: INTEGER; VAR done: BOOLEAN): Components.ComponentResult;
  714.     (*$IF NOT GENERATINGCFM*)
  715.     INLINE PASCAL $2F3C, $6, $10D, $7000, $A82A;
  716.     (*$END*)
  717. PROCEDURE SGDisplayFrame*(c: SGChannel; bufferNum: INTEGER; (*CONST*)VAR mp: ImageCompression.MatrixRecord; clipRgn: Quickdraw.RgnHandle): Components.ComponentResult;
  718.     (*$IF NOT GENERATINGCFM*)
  719.     INLINE PASCAL $2F3C, $A, $10E, $7000, $A82A;
  720.     (*$END*)
  721. PROCEDURE SGCompressFrame*(c: SGChannel; bufferNum: INTEGER): Components.ComponentResult;
  722.     (*$IF NOT GENERATINGCFM*)
  723.     INLINE PASCAL $2F3C, $2, $10F, $7000, $A82A;
  724.     (*$END*)
  725. PROCEDURE SGCompressFrameComplete*(c: SGChannel; bufferNum: INTEGER; VAR done: BOOLEAN; VAR ci: SGCompressInfo): Components.ComponentResult;
  726.     (*$IF NOT GENERATINGCFM*)
  727.     INLINE PASCAL $2F3C, $A, $110, $7000, $A82A;
  728.     (*$END*)
  729. PROCEDURE SGAddFrame*(c: SGChannel; bufferNum: INTEGER; atTime: Movies.TimeValue; scale: Movies.TimeScale; (*CONST*)VAR ci: SGCompressInfo): Components.ComponentResult;
  730.     (*$IF NOT GENERATINGCFM*)
  731.     INLINE PASCAL $2F3C, $E, $111, $7000, $A82A;
  732.     (*$END*)
  733. PROCEDURE SGTransferFrameForCompress*(c: SGChannel; bufferNum: INTEGER; (*CONST*)VAR mp: ImageCompression.MatrixRecord; clipRgn: Quickdraw.RgnHandle): Components.ComponentResult;
  734.     (*$IF NOT GENERATINGCFM*)
  735.     INLINE PASCAL $2F3C, $A, $112, $7000, $A82A;
  736.     (*$END*)
  737. PROCEDURE SGSetCompressBuffer*(c: SGChannel; depth: INTEGER; (*CONST*)VAR compressSize: Types.Rect): Components.ComponentResult;
  738.     (*$IF NOT GENERATINGCFM*)
  739.     INLINE PASCAL $2F3C, $6, $113, $7000, $A82A;
  740.     (*$END*)
  741. PROCEDURE SGGetCompressBuffer*(c: SGChannel; VAR depth: INTEGER; VAR compressSize: Types.Rect): Components.ComponentResult;
  742.     (*$IF NOT GENERATINGCFM*)
  743.     INLINE PASCAL $2F3C, $8, $114, $7000, $A82A;
  744.     (*$END*)
  745. PROCEDURE SGGetBufferInfo*(c: SGChannel; bufferNum: INTEGER; VAR bufferPM: Quickdraw.PixMapHandle; VAR bufferRect: Types.Rect; VAR compressBuffer: QDOffscreen.GWorldPtr; VAR compressBufferRect: Types.Rect): Components.ComponentResult;
  746.     (*$IF NOT GENERATINGCFM*)
  747.     INLINE PASCAL $2F3C, $12, $115, $7000, $A82A;
  748.     (*$END*)
  749. PROCEDURE SGSetUseScreenBuffer*(c: SGChannel; useScreenBuffer: BOOLEAN): Components.ComponentResult;
  750.     (*$IF NOT GENERATINGCFM*)
  751.     INLINE PASCAL $2F3C, $2, $116, $7000, $A82A;
  752.     (*$END*)
  753. PROCEDURE SGGetUseScreenBuffer*(c: SGChannel; VAR useScreenBuffer: BOOLEAN): Components.ComponentResult;
  754.     (*$IF NOT GENERATINGCFM*)
  755.     INLINE PASCAL $2F3C, $4, $117, $7000, $A82A;
  756.     (*$END*)
  757. PROCEDURE SGGrabCompressComplete*(c: SGChannel; VAR done: BOOLEAN; VAR ci: SGCompressInfo; VAR tr: Movies.TimeRecord): Components.ComponentResult;
  758.     (*$IF NOT GENERATINGCFM*)
  759.     INLINE PASCAL $2F3C, $C, $118, $7000, $A82A;
  760.     (*$END*)
  761. PROCEDURE SGDisplayCompress*(c: SGChannel; dataPtr: Types.Ptr; desc: ImageCompression.ImageDescriptionHandle; VAR mp: ImageCompression.MatrixRecord; clipRgn: Quickdraw.RgnHandle): Components.ComponentResult;
  762.     (*$IF NOT GENERATINGCFM*)
  763.     INLINE PASCAL $2F3C, $10, $119, $7000, $A82A;
  764.     (*$END*)
  765. PROCEDURE SGSetFrameRate*(c: SGChannel; frameRate: Types.Fixed): Components.ComponentResult;
  766.     (*$IF NOT GENERATINGCFM*)
  767.     INLINE PASCAL $2F3C, $4, $11A, $7000, $A82A;
  768.     (*$END*)
  769. PROCEDURE SGGetFrameRate*(c: SGChannel; VAR frameRate: Types.Fixed): Components.ComponentResult;
  770.     (*$IF NOT GENERATINGCFM*)
  771.     INLINE PASCAL $2F3C, $4, $11B, $7000, $A82A;
  772.     (*$END*)
  773. (*** Sequence Grab SOUND CHANNEL Components.Component Stuff ***)
  774. (*
  775.     Sound stuff
  776. *)
  777. PROCEDURE SGSetSoundInputDriver*(c: SGChannel; driverName: Types.ConstStr255Param): Components.ComponentResult;
  778.     (*$IF NOT GENERATINGCFM*)
  779.     INLINE PASCAL $2F3C, $4, $100, $7000, $A82A;
  780.     (*$END*)
  781. PROCEDURE SGGetSoundInputDriver*(c: SGChannel): LONGINT;
  782.     (*$IF NOT GENERATINGCFM*)
  783.     INLINE PASCAL $2F3C, 0, $101, $7000, $A82A;
  784.     (*$END*)
  785. PROCEDURE SGSoundInputDriverChanged*(c: SGChannel): Components.ComponentResult;
  786.     (*$IF NOT GENERATINGCFM*)
  787.     INLINE PASCAL $2F3C, 0, $102, $7000, $A82A;
  788.     (*$END*)
  789. PROCEDURE SGSetSoundRecordChunkSize*(c: SGChannel; seconds: LONGINT): Components.ComponentResult;
  790.     (*$IF NOT GENERATINGCFM*)
  791.     INLINE PASCAL $2F3C, $4, $103, $7000, $A82A;
  792.     (*$END*)
  793. PROCEDURE SGGetSoundRecordChunkSize*(c: SGChannel): LONGINT;
  794.     (*$IF NOT GENERATINGCFM*)
  795.     INLINE PASCAL $2F3C, 0, $104, $7000, $A82A;
  796.     (*$END*)
  797. PROCEDURE SGSetSoundInputRate*(c: SGChannel; rate: Types.Fixed): Components.ComponentResult;
  798.     (*$IF NOT GENERATINGCFM*)
  799.     INLINE PASCAL $2F3C, $4, $105, $7000, $A82A;
  800.     (*$END*)
  801. PROCEDURE SGGetSoundInputRate*(c: SGChannel): Types.Fixed;
  802.     (*$IF NOT GENERATINGCFM*)
  803.     INLINE PASCAL $2F3C, 0, $106, $7000, $A82A;
  804.     (*$END*)
  805. PROCEDURE SGSetSoundInputParameters*(c: SGChannel; sampleSize: INTEGER; numChannels: INTEGER; compressionType: Types.OSType): Components.ComponentResult;
  806.     (*$IF NOT GENERATINGCFM*)
  807.     INLINE PASCAL $2F3C, $8, $107, $7000, $A82A;
  808.     (*$END*)
  809. PROCEDURE SGGetSoundInputParameters*(c: SGChannel; VAR sampleSize: INTEGER; VAR numChannels: INTEGER; VAR compressionType: Types.OSType): Components.ComponentResult;
  810.     (*$IF NOT GENERATINGCFM*)
  811.     INLINE PASCAL $2F3C, $C, $108, $7000, $A82A;
  812.     (*$END*)
  813.  
  814. CONST
  815.     sgChannelAtom*                = LONG("chan");
  816.     sgChannelSettingsAtom*        = LONG("ctom");
  817.     sgChannelDescription*        = LONG("cdsc");
  818.     sgChannelSettings*            = LONG("cset");
  819.  
  820.     sgDeviceNameType*            = LONG("name");
  821.     sgUsageType*                    = LONG("use ");
  822.     sgPlayFlagsType*                = LONG("plyf");
  823.     sgClipType*                    = LONG("clip");
  824.     sgMatrixType*                = LONG("mtrx");
  825.     sgVolumeType*                = LONG("volu");
  826.  
  827.     sgPanelSettingsAtom*            = LONG("ptom");
  828.     sgPanelDescription*            = LONG("pdsc");
  829.     sgPanelSettings*                = LONG("pset");
  830.  
  831.     sgcSoundCompressionType*        = LONG("scmp");
  832.     sgcSoundSampleRateType*        = LONG("srat");
  833.     sgcSoundChannelCountType*    = LONG("schn");
  834.     sgcSoundSampleSizeType*        = LONG("ssiz");
  835.     sgcSoundInputType*            = LONG("sinp");
  836.     sgcSoundGainType*            = LONG("gain");
  837.  
  838.     sgcVideoHueType*                = LONG("hue ");
  839.     sgcVideoSaturationType*        = LONG("satr");
  840.     sgcVideoContrastType*        = LONG("trst");
  841.     sgcVideoSharpnessType*        = LONG("shrp");
  842.     sgcVideoBrigtnessType*        = LONG("brit");
  843.     sgcVideoBlackLevelType*        = LONG("blkl");
  844.     sgcVideoWhiteLevelType*        = LONG("whtl");
  845.     sgcVideoInputType*            = LONG("vinp");
  846.     sgcVideoFormatType*            = LONG("vstd");
  847.     sgcVideoFilterType*            = LONG("vflt");
  848.     sgcVideoRectType*            = LONG("vrct");
  849.     sgVideoDigitizerType*        = LONG("vdig");
  850.  
  851.     kSGInitializeSelect*            = $1;
  852.     kSGSetDataOutputSelect*        = $2;
  853.     kSGGetDataOutputSelect*        = $3;
  854.     kSGSetGWorldSelect*            = $4;
  855.     kSGGetGWorldSelect*            = $5;
  856.     kSGNewChannelSelect*            = $6;
  857.     kSGDisposeChannelSelect*        = $7;
  858.     kSGStartPreviewSelect*        = $10;
  859.     kSGStartRecordSelect*        = $11;
  860.     kSGIdleSelect*                = $12;
  861.     kSGStopSelect*                = $13;
  862.     kSGPauseSelect*                = $14;
  863.     kSGPrepareSelect*            = $15;
  864.     kSGReleaseSelect*            = $16;
  865.     kSGGetMovieSelect*            = $17;
  866.     kSGSetMaximumRecordTimeSelect* = $18;
  867.     kSGGetMaximumRecordTimeSelect* = $19;
  868.     kSGGetStorageSpaceRemainingSelect* = $1A;
  869.     kSGGetTimeRemainingSelect*    = $1B;
  870.     kSGGrabPictSelect*            = $1C;
  871.     kSGGetLastMovieResIDSelect*    = $1D;
  872.     kSGSetFlagsSelect*            = $1E;
  873.     kSGGetFlagsSelect*            = $1F;
  874.     kSGSetDataProcSelect*        = $20;
  875.     kSGNewChannelFromComponentSelect* = $21;
  876.     kSGDisposeDeviceListSelect*    = $22;
  877.     kSGAppendDeviceListToMenuSelect* = $23;
  878.     kSGSetSettingsSelect*        = $24;
  879.     kSGGetSettingsSelect*        = $25;
  880.     kSGGetIndChannelSelect*        = $26;
  881.     kSGUpdateSelect*                = $27;
  882.     kSGGetPauseSelect*            = $28;
  883.     kSGSettingsDialogSelect*        = $29;
  884.     kSGGetAlignmentProcSelect*    = $2A;
  885.     kSGSetChannelSettingsSelect*    = $2B;
  886.     kSGGetChannelSettingsSelect*    = $2C;
  887.     kSGGetModeSelect*            = $2D;
  888.     kSGSetDataRefSelect*            = $2E;
  889.     kSGGetDataRefSelect*            = $2F;
  890.     kSGNewOutputSelect*            = $30;
  891.     kSGDisposeOutputSelect*        = $31;
  892.     kSGSetOutputFlagsSelect*        = $32;
  893.     kSGSetChannelOutputSelect*    = $33;
  894.     kSGGetDataOutputStorageSpaceRemainingSelect* = $34;
  895.     kSGWriteMovieDataSelect*        = $100;
  896.     kSGAddFrameReferenceSelect*    = $101;
  897.     kSGGetNextFrameReferenceSelect* = $102;
  898.     kSGGetTimeBaseSelect*        = $103;
  899.     kSGSortDeviceListSelect*        = $104;
  900.     kSGAddMovieDataSelect*        = $105;
  901.     kSGChangedSourceSelect*        = $106;
  902.     kSGCSetChannelUsageSelect*    = $80;
  903.     kSGCGetChannelUsageSelect*    = $81;
  904.     kSGCSetChannelBoundsSelect*    = $82;
  905.     kSGCGetChannelBoundsSelect*    = $83;
  906.     kSGCSetChannelVolumeSelect*    = $84;
  907.     kSGCGetChannelVolumeSelect*    = $85;
  908.     kSGCGetChannelInfoSelect*    = $86;
  909.     kSGCSetChannelPlayFlagsSelect* = $87;
  910.     kSGCGetChannelPlayFlagsSelect* = $88;
  911.     kSGCSetChannelMaxFramesSelect* = $89;
  912.     kSGCGetChannelMaxFramesSelect* = $8A;
  913.     kSGCSetChannelRefConSelect*    = $8B;
  914.     kSGCSetChannelClipSelect*    = $8C;
  915.     kSGCGetChannelClipSelect*    = $8D;
  916.     kSGCGetChannelSampleDescriptionSelect* = $8E;
  917.     kSGCGetChannelDeviceListSelect* = $8F;
  918.     kSGCSetChannelDeviceSelect*    = $90;
  919.     kSGCSetChannelMatrixSelect*    = $91;
  920.     kSGCGetChannelMatrixSelect*    = $92;
  921.     kSGCGetChannelTimeScaleSelect* = $93;
  922.     kSGCChannelPutPictureSelect*    = $94;
  923.     kSGCChannelSetRequestedDataRateSelect* = $95;
  924.     kSGCChannelGetRequestedDataRateSelect* = $96;
  925.     kSGCChannelSetDataSourceNameSelect* = $97;
  926.     kSGCChannelGetDataSourceNameSelect* = $98;
  927.     kSGCInitChannelSelect*        = $180;
  928.     kSGCWriteSamplesSelect*        = $181;
  929.     kSGCGetDataRateSelect*        = $182;
  930.     kSGCAlignChannelRectSelect*    = $183;
  931.     kSGCPanelGetDitlSelect*        = $200;
  932.     kSGCPanelGetTitleSelect*        = $201;
  933.     kSGCPanelCanRunSelect*        = $202;
  934.     kSGCPanelInstallSelect*        = $203;
  935.     kSGCPanelEventSelect*        = $204;
  936.     kSGCPanelItemSelect*            = $205;
  937.     kSGCPanelRemoveSelect*        = $206;
  938.     kSGCPanelSetGrabberSelect*    = $207;
  939.     kSGCPanelSetResFileSelect*    = $208;
  940.     kSGCPanelGetSettingsSelect*    = $209;
  941.     kSGCPanelSetSettingsSelect*    = $20A;
  942.     kSGCPanelValidateInputSelect* = $20B;
  943.     kSGCPanelSetEventFilterSelect* = $20C;
  944.     kSGCGetSrcVideoBoundsSelect*    = $100;
  945.     kSGCSetVideoRectSelect*        = $101;
  946.     kSGCGetVideoRectSelect*        = $102;
  947.     kSGCGetVideoCompressorTypeSelect* = $103;
  948.     kSGCSetVideoCompressorTypeSelect* = $104;
  949.     kSGCSetVideoCompressorSelect* = $105;
  950.     kSGCGetVideoCompressorSelect* = $106;
  951.     kSGCGetVideoDigitizerComponentSelect* = $107;
  952.     kSGCSetVideoDigitizerComponentSelect* = $108;
  953.     kSGCVideoDigitizerChangedSelect* = $109;
  954.     kSGCSetVideoBottlenecksSelect* = $10A;
  955.     kSGCGetVideoBottlenecksSelect* = $10B;
  956.     kSGCGrabFrameSelect*            = $10C;
  957.     kSGCGrabFrameCompleteSelect*    = $10D;
  958.     kSGCDisplayFrameSelect*        = $10E;
  959.     kSGCCompressFrameSelect*        = $10F;
  960.     kSGCCompressFrameCompleteSelect* = $110;
  961.     kSGCAddFrameSelect*            = $111;
  962.     kSGCTransferFrameForCompressSelect* = $112;
  963.     kSGCSetCompressBufferSelect*    = $113;
  964.     kSGCGetCompressBufferSelect*    = $114;
  965.     kSGCGetBufferInfoSelect*        = $115;
  966.     kSGCSetUseScreenBufferSelect* = $116;
  967.     kSGCGetUseScreenBufferSelect* = $117;
  968.     kSGCGrabCompressCompleteSelect* = $118;
  969.     kSGCDisplayCompressSelect*    = $119;
  970.     kSGCSetFrameRateSelect*        = $11A;
  971.     kSGCGetFrameRateSelect*        = $11B;
  972.     kSGCSetSoundInputDriverSelect* = $100;
  973.     kSGCGetSoundInputDriverSelect* = $101;
  974.     kSGCSoundInputDriverChangedSelect* = $102;
  975.     kSGCSetSoundRecordChunkSizeSelect* = $103;
  976.     kSGCGetSoundRecordChunkSizeSelect* = $104;
  977.     kSGCSetSoundInputRateSelect*    = $105;
  978.     kSGCGetSoundInputRateSelect*    = $106;
  979.     kSGCSetSoundInputParametersSelect* = $107;
  980.     kSGCGetSoundInputParametersSelect* = $108;
  981.  
  982. (* Standard type for video digitizers *)
  983.     videoDigitizerComponentType*    = LONG("vdig");
  984.     vdigInterfaceRev*            = 2;
  985.  
  986. (* Input Format Standards *)
  987.     ntscIn*                        = 0;                            (* current input format *)
  988.     currentIn*                    = 0;                            (* ntsc input format *)
  989.     palIn*                        = 1;                            (* pal input format *)
  990.     secamIn*                        = 2;                            (* secam input format *)
  991.     ntscReallyIn*                = 3;                            (* ntsc input format *)
  992.  
  993. (* Input Formats *)
  994.     compositeIn*                    = 0;                            (* input is composite format *)
  995.     sVideoIn*                    = 1;                            (* input is sVideo format *)
  996.     rgbComponentIn*                = 2;                            (* input is rgb component format *)
  997.     rgbComponentSyncIn*            = 3;                            (* input is rgb component format (sync on green?)*)
  998.     yuvComponentIn*                = 4;                            (* input is yuv component format *)
  999.     yuvComponentSyncIn*            = 5;                            (* input is yuv component format (sync on green?) *)
  1000.  
  1001. (* Video Digitizer PlayThru States *)
  1002.     vdPlayThruOff*                = 0;
  1003.     vdPlayThruOn*                = 1;
  1004.  
  1005. (* Input Color Space Modes *)
  1006.     vdDigitizerBW*                = 0;                            (* black and white *)
  1007.     vdDigitizerRGB*                = 1;                            (* rgb color *)
  1008.  
  1009. (* Phase Lock Loop Modes *)
  1010.     vdBroadcastMode*                = 0;                            (* Broadcast / Laser Disk video mode *)
  1011.     vdVTRMode*                    = 1;                            (* VCR / Magnetic media mode *)
  1012.  
  1013. (* Field Select Options *)
  1014.     vdUseAnyField*                = 0;                            (* Digitizers choice on field use *)
  1015.     vdUseOddField*                = 1;                            (* Use odd field for half size vert and smaller *)
  1016.     vdUseEvenField*                = 2;                            (* Use even field for half size vert and smaller *)
  1017.  
  1018. (* vdig types *)
  1019.     vdTypeBasic*                    = 0;                            (* basic, no clipping *)
  1020.     vdTypeAlpha*                    = 1;                            (* supports clipping with alpha channel *)
  1021.     vdTypeMask*                    = 2;                            (* supports clipping with mask plane *)
  1022.     vdTypeKey*                    = 3;                            (* supports clipping with key color(s) *)
  1023.  
  1024. (* Digitizer Input Capability/Current Flags    *)
  1025.     digiInDoesNTSC*                = ASH(1,0);                    (* digitizer supports NTSC input format *)
  1026.     digiInDoesPAL*                = ASH(1,1);                    (* digitizer supports PAL input format *)
  1027.     digiInDoesSECAM*                = ASH(1,2);                    (* digitizer supports SECAM input format *)
  1028.     digiInDoesGenLock*            = ASH(1,7);                    (* digitizer does genlock *)
  1029.     digiInDoesComposite*            = ASH(1,8);                    (* digitizer supports composite input type *)
  1030.     digiInDoesSVideo*            = ASH(1,9);                    (* digitizer supports S-Video input type *)
  1031.     digiInDoesComponent*            = ASH(1,10);                (* digitizer supports component* = rgb, input type *)
  1032.     digiInVTR_Broadcast*            = ASH(1,11);                (* digitizer can differentiate between the two *)
  1033.     digiInDoesColor*                = ASH(1,12);                (* digitizer supports color *)
  1034.     digiInDoesBW*                = ASH(1,13);                (* digitizer supports black & white *)
  1035. (* Digitizer Input Current Flags* = these are valid only during active operating conditions,    *)
  1036.     digiInSignalLock*            = ASH(1,31);                (* digitizer detects input signal is locked, this bit* = horiz lock || vertical lock *)
  1037.  
  1038. (* Digitizer Output Capability/Current Flags *)
  1039.     digiOutDoes1*                = ASH(1,0);                    (* digitizer supports 1 bit pixels *)
  1040.     digiOutDoes2*                = ASH(1,1);                    (* digitizer supports 2 bit pixels *)
  1041.     digiOutDoes4*                = ASH(1,2);                    (* digitizer supports 4 bit pixels *)
  1042.     digiOutDoes8*                = ASH(1,3);                    (* digitizer supports 8 bit pixels *)
  1043.     digiOutDoes16*                = ASH(1,4);                    (* digitizer supports 16 bit pixels *)
  1044.     digiOutDoes32*                = ASH(1,5);                    (* digitizer supports 32 bit pixels *)
  1045.     digiOutDoesDither*            = ASH(1,6);                    (* digitizer dithers in indexed modes *)
  1046.     digiOutDoesStretch*            = ASH(1,7);                    (* digitizer can arbitrarily stretch *)
  1047.     digiOutDoesShrink*            = ASH(1,8);                    (* digitizer can arbitrarily shrink *)
  1048.     digiOutDoesMask*                = ASH(1,9);                    (* digitizer can mask to clipping regions *)
  1049.     digiOutDoesDouble*            = ASH(1,11);                (* digitizer can stretch to exactly double size *)
  1050.     digiOutDoesQuad*                = ASH(1,12);                (* digitizer can stretch exactly quadruple size *)
  1051.     digiOutDoesQuarter*            = ASH(1,13);                (* digitizer can shrink to exactly quarter size *)
  1052.     digiOutDoesSixteenth*        = ASH(1,14);                (* digitizer can shrink to exactly sixteenth size *)
  1053.     digiOutDoesRotate*            = ASH(1,15);                (* digitizer supports rotate transformations *)
  1054.     digiOutDoesHorizFlip*        = ASH(1,16);                (* digitizer supports horizontal flips Sx < 0 *)
  1055.     digiOutDoesVertFlip*            = ASH(1,17);                (* digitizer supports vertical flips Sy < 0 *)
  1056.     digiOutDoesSkew*                = ASH(1,18);                (* digitizer supports skew* = shear,twist, *)
  1057.     digiOutDoesBlend*            = ASH(1,19);
  1058.     digiOutDoesWarp*                = ASH(1,20);
  1059.     digiOutDoesHW_DMA*            = ASH(1,21);                (* digitizer not constrained to local device *)
  1060.     digiOutDoesHWPlayThru*        = ASH(1,22);                (* digitizer doesn't need time to play thru *)
  1061.     digiOutDoesILUT*                = ASH(1,23);                (* digitizer does inverse LUT for index modes *)
  1062.     digiOutDoesKeyColor*            = ASH(1,24);                (* digitizer does key color functions too *)
  1063.     digiOutDoesAsyncGrabs*        = ASH(1,25);                (* digitizer supports async grabs *)
  1064.     digiOutDoesUnreadableScreenBits* = ASH(1,26);            (* playthru doesn't generate readable bits on screen*)
  1065.     digiOutDoesCompress*            = ASH(1,27);                (* supports alternate output data types *)
  1066.     digiOutDoesCompressOnly*        = ASH(1,28);                (* can't provide raw frames anywhere *)
  1067.     digiOutDoesPlayThruDuringCompress* = ASH(1,29);            (* digi can do playthru while providing compressed data *)
  1068.  
  1069. (* Types *)
  1070.     
  1071. TYPE
  1072.     VideoDigitizerComponent* = Components.ComponentInstance;
  1073.  
  1074.     VideoDigitizerError* = Components.ComponentResult;
  1075.  
  1076.     DigitizerInfo* = RECORD
  1077.         vdigType*:                INTEGER;
  1078.         inputCapabilityFlags*:    LONGINT;
  1079.         outputCapabilityFlags*:    LONGINT;
  1080.         inputCurrentFlags*:        LONGINT;
  1081.         outputCurrentFlags*:        LONGINT;
  1082.         slot*:                    INTEGER;                                (* temporary for connection purposes *)
  1083.         gdh*:                    Quickdraw.GDHandle;                                (* temporary for digitizers that have preferred screen *)
  1084.         maskgdh*:                Quickdraw.GDHandle;                                (* temporary for digitizers that have mask planes *)
  1085.         minDestHeight*:            INTEGER;                                (* Smallest resizable height *)
  1086.         minDestWidth*:            INTEGER;                                (* Smallest resizable width *)
  1087.         maxDestHeight*:            INTEGER;                                (* Largest resizable height *)
  1088.         maxDestWidth*:            INTEGER;                                (* Largest resizable height *)
  1089.         blendLevels*:            INTEGER;                                (* Number of blend levels supported (2 if 1 bit mask) *)
  1090.         reserved*:                LONGINT;                                (* reserved *)
  1091.     END;
  1092.  
  1093.     VdigType* = RECORD
  1094.         digType*:                LONGINT;
  1095.         reserved*:                LONGINT;
  1096.     END;
  1097.  
  1098.     VdigTypeList* = RECORD
  1099.         count*:                    INTEGER;
  1100.         list*:                    ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF VdigType;
  1101.     END;
  1102.  
  1103.     VdigBufferRec* = RECORD
  1104.         dest*:                    Quickdraw.PixMapHandle;
  1105.         location*:                Types.Point;
  1106.         reserved*:                LONGINT;
  1107.     END;
  1108.  
  1109.     VdigBufferRecList* = RECORD
  1110.         count*:                    INTEGER;
  1111.         matrix*:                    ImageCompression.MatrixRecordPtr;
  1112.         mask*:                    Quickdraw.RgnHandle;
  1113.         list*:                    ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF VdigBufferRec;
  1114.     END;
  1115.  
  1116.     VdigBufferRecListPtr* = POINTER TO VdigBufferRecList;
  1117.     VdigBufferRecListHandle* = HANDLE TO VdigBufferRecList (*Δ  POINTER TO VdigBufferRecListPtr*);
  1118.  
  1119.     VdigIntProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (flags: LONGINT; refcon: LONGINT);
  1120.     VdigIntUPP* = Types.UniversalProcPtr;
  1121.  
  1122.     VDCompressionList* = RECORD
  1123.         codec*:                    ImageCompression.CodecComponent;
  1124.         cType*:                    ImageCompression.CodecType;
  1125.         typeName*:                Types.Str63;
  1126.         name*:                    Types.Str63;
  1127.         formatFlags*:            LONGINT;
  1128.         compressFlags*:            LONGINT;
  1129.         reserved*:                LONGINT;
  1130.     END;
  1131.  
  1132.     VDCompressionListPtr* = POINTER TO VDCompressionList;
  1133.     VDCompressionListHandle* = HANDLE TO VDCompressionList (*ΔΔ POINTER TO VDCompressionListPtr*);
  1134.  
  1135.  
  1136. CONST
  1137.     dmaDepth1*                    = 1;
  1138.     dmaDepth2*                    = 2;
  1139.     dmaDepth4*                    = 4;
  1140.     dmaDepth8*                    = 8;
  1141.     dmaDepth16*                    = 16;
  1142.     dmaDepth32*                    = 32;
  1143.     dmaDepth2Gray*                = 64;
  1144.     dmaDepth4Gray*                = 128;
  1145.     dmaDepth8Gray*                = 256;
  1146.  
  1147.     kVDIGControlledFrameRate*    = -1;
  1148.  
  1149. (* number of vdig calls*)
  1150.     kvdigSelectors*                = 86;
  1151.  
  1152.  
  1153. PROCEDURE VDGetMaxSrcRect*(ci: VideoDigitizerComponent; inputStd: INTEGER; VAR maxSrcRect: Types.Rect): VideoDigitizerError;
  1154.     (*$IF NOT GENERATINGCFM*)
  1155.     INLINE PASCAL $2F3C, $6, $1, $7000, $A82A;
  1156.     (*$END*)
  1157. PROCEDURE VDGetActiveSrcRect*(ci: VideoDigitizerComponent; inputStd: INTEGER; VAR activeSrcRect: Types.Rect): VideoDigitizerError;
  1158.     (*$IF NOT GENERATINGCFM*)
  1159.     INLINE PASCAL $2F3C, $6, $2, $7000, $A82A;
  1160.     (*$END*)
  1161. PROCEDURE VDSetDigitizerRect*(ci: VideoDigitizerComponent; VAR digitizerRect: Types.Rect): VideoDigitizerError;
  1162.     (*$IF NOT GENERATINGCFM*)
  1163.     INLINE PASCAL $2F3C, $4, $3, $7000, $A82A;
  1164.     (*$END*)
  1165. PROCEDURE VDGetDigitizerRect*(ci: VideoDigitizerComponent; VAR digitizerRect: Types.Rect): VideoDigitizerError;
  1166.     (*$IF NOT GENERATINGCFM*)
  1167.     INLINE PASCAL $2F3C, $4, $4, $7000, $A82A;
  1168.     (*$END*)
  1169. PROCEDURE VDGetVBlankRect*(ci: VideoDigitizerComponent; inputStd: INTEGER; VAR vBlankRect: Types.Rect): VideoDigitizerError;
  1170.     (*$IF NOT GENERATINGCFM*)
  1171.     INLINE PASCAL $2F3C, $6, $5, $7000, $A82A;
  1172.     (*$END*)
  1173. PROCEDURE VDGetMaskPixMap*(ci: VideoDigitizerComponent; maskPixMap: Quickdraw.PixMapHandle): VideoDigitizerError;
  1174.     (*$IF NOT GENERATINGCFM*)
  1175.     INLINE PASCAL $2F3C, $4, $6, $7000, $A82A;
  1176.     (*$END*)
  1177. PROCEDURE VDGetPlayThruDestination*(ci: VideoDigitizerComponent; VAR dest: Quickdraw.PixMapHandle; VAR destRect: Types.Rect; VAR m: ImageCompression.MatrixRecord; VAR mask: Quickdraw.RgnHandle): VideoDigitizerError;
  1178.     (*$IF NOT GENERATINGCFM*)
  1179.     INLINE PASCAL $2F3C, $10, $8, $7000, $A82A;
  1180.     (*$END*)
  1181. PROCEDURE VDUseThisCLUT*(ci: VideoDigitizerComponent; colorTableHandle: Quickdraw.CTabHandle): VideoDigitizerError;
  1182.     (*$IF NOT GENERATINGCFM*)
  1183.     INLINE PASCAL $2F3C, $4, $9, $7000, $A82A;
  1184.     (*$END*)
  1185. PROCEDURE VDSetInputGammaValue*(ci: VideoDigitizerComponent; channel1: Types.Fixed; channel2: Types.Fixed; channel3: Types.Fixed): VideoDigitizerError;
  1186.     (*$IF NOT GENERATINGCFM*)
  1187.     INLINE PASCAL $2F3C, $C, $A, $7000, $A82A;
  1188.     (*$END*)
  1189. PROCEDURE VDGetInputGammaValue*(ci: VideoDigitizerComponent; VAR channel1: Types.Fixed; VAR channel2: Types.Fixed; VAR channel3: Types.Fixed): VideoDigitizerError;
  1190.     (*$IF NOT GENERATINGCFM*)
  1191.     INLINE PASCAL $2F3C, $C, $B, $7000, $A82A;
  1192.     (*$END*)
  1193. PROCEDURE VDSetBrightness*(ci: VideoDigitizerComponent; VAR brightness: INTEGER): VideoDigitizerError;
  1194.     (*$IF NOT GENERATINGCFM*)
  1195.     INLINE PASCAL $2F3C, $4, $C, $7000, $A82A;
  1196.     (*$END*)
  1197. PROCEDURE VDGetBrightness*(ci: VideoDigitizerComponent; VAR brightness: INTEGER): VideoDigitizerError;
  1198.     (*$IF NOT GENERATINGCFM*)
  1199.     INLINE PASCAL $2F3C, $4, $D, $7000, $A82A;
  1200.     (*$END*)
  1201. PROCEDURE VDSetContrast*(ci: VideoDigitizerComponent; VAR contrast: INTEGER): VideoDigitizerError;
  1202.     (*$IF NOT GENERATINGCFM*)
  1203.     INLINE PASCAL $2F3C, $4, $E, $7000, $A82A;
  1204.     (*$END*)
  1205. PROCEDURE VDSetHue*(ci: VideoDigitizerComponent; VAR hue: INTEGER): VideoDigitizerError;
  1206.     (*$IF NOT GENERATINGCFM*)
  1207.     INLINE PASCAL $2F3C, $4, $F, $7000, $A82A;
  1208.     (*$END*)
  1209. PROCEDURE VDSetSharpness*(ci: VideoDigitizerComponent; VAR sharpness: INTEGER): VideoDigitizerError;
  1210.     (*$IF NOT GENERATINGCFM*)
  1211.     INLINE PASCAL $2F3C, $4, $10, $7000, $A82A;
  1212.     (*$END*)
  1213. PROCEDURE VDSetSaturation*(ci: VideoDigitizerComponent; VAR saturation: INTEGER): VideoDigitizerError;
  1214.     (*$IF NOT GENERATINGCFM*)
  1215.     INLINE PASCAL $2F3C, $4, $11, $7000, $A82A;
  1216.     (*$END*)
  1217. PROCEDURE VDGetContrast*(ci: VideoDigitizerComponent; VAR contrast: INTEGER): VideoDigitizerError;
  1218.     (*$IF NOT GENERATINGCFM*)
  1219.     INLINE PASCAL $2F3C, $4, $12, $7000, $A82A;
  1220.     (*$END*)
  1221. PROCEDURE VDGetHue*(ci: VideoDigitizerComponent; VAR hue: INTEGER): VideoDigitizerError;
  1222.     (*$IF NOT GENERATINGCFM*)
  1223.     INLINE PASCAL $2F3C, $4, $13, $7000, $A82A;
  1224.     (*$END*)
  1225. PROCEDURE VDGetSharpness*(ci: VideoDigitizerComponent; VAR sharpness: INTEGER): VideoDigitizerError;
  1226.     (*$IF NOT GENERATINGCFM*)
  1227.     INLINE PASCAL $2F3C, $4, $14, $7000, $A82A;
  1228.     (*$END*)
  1229. PROCEDURE VDGetSaturation*(ci: VideoDigitizerComponent; VAR saturation: INTEGER): VideoDigitizerError;
  1230.     (*$IF NOT GENERATINGCFM*)
  1231.     INLINE PASCAL $2F3C, $4, $15, $7000, $A82A;
  1232.     (*$END*)
  1233. PROCEDURE VDGrabOneFrame*(ci: VideoDigitizerComponent): VideoDigitizerError;
  1234.     (*$IF NOT GENERATINGCFM*)
  1235.     INLINE PASCAL $2F3C, 0, $16, $7000, $A82A;
  1236.     (*$END*)
  1237. PROCEDURE VDGetMaxAuxBuffer*(ci: VideoDigitizerComponent; VAR pm: Quickdraw.PixMapHandle; VAR r: Types.Rect): VideoDigitizerError;
  1238.     (*$IF NOT GENERATINGCFM*)
  1239.     INLINE PASCAL $2F3C, $8, $17, $7000, $A82A;
  1240.     (*$END*)
  1241. PROCEDURE VDGetDigitizerInfo*(ci: VideoDigitizerComponent; VAR info: DigitizerInfo): VideoDigitizerError;
  1242.     (*$IF NOT GENERATINGCFM*)
  1243.     INLINE PASCAL $2F3C, $4, $19, $7000, $A82A;
  1244.     (*$END*)
  1245. PROCEDURE VDGetCurrentFlags*(ci: VideoDigitizerComponent; VAR inputCurrentFlag: LONGINT; VAR outputCurrentFlag: LONGINT): VideoDigitizerError;
  1246.     (*$IF NOT GENERATINGCFM*)
  1247.     INLINE PASCAL $2F3C, $8, $1A, $7000, $A82A;
  1248.     (*$END*)
  1249. PROCEDURE VDSetKeyColor*(ci: VideoDigitizerComponent; index: LONGINT): VideoDigitizerError;
  1250.     (*$IF NOT GENERATINGCFM*)
  1251.     INLINE PASCAL $2F3C, $4, $1B, $7000, $A82A;
  1252.     (*$END*)
  1253. PROCEDURE VDGetKeyColor*(ci: VideoDigitizerComponent; VAR index: LONGINT): VideoDigitizerError;
  1254.     (*$IF NOT GENERATINGCFM*)
  1255.     INLINE PASCAL $2F3C, $4, $1C, $7000, $A82A;
  1256.     (*$END*)
  1257. PROCEDURE VDAddKeyColor*(ci: VideoDigitizerComponent; VAR index: LONGINT): VideoDigitizerError;
  1258.     (*$IF NOT GENERATINGCFM*)
  1259.     INLINE PASCAL $2F3C, $4, $1D, $7000, $A82A;
  1260.     (*$END*)
  1261. PROCEDURE VDGetNextKeyColor*(ci: VideoDigitizerComponent; index: LONGINT): VideoDigitizerError;
  1262.     (*$IF NOT GENERATINGCFM*)
  1263.     INLINE PASCAL $2F3C, $4, $1E, $7000, $A82A;
  1264.     (*$END*)
  1265. PROCEDURE VDSetKeyColorRange*(ci: VideoDigitizerComponent; VAR minRGB: Quickdraw.RGBColor; VAR maxRGB: Quickdraw.RGBColor): VideoDigitizerError;
  1266.     (*$IF NOT GENERATINGCFM*)
  1267.     INLINE PASCAL $2F3C, $8, $1F, $7000, $A82A;
  1268.     (*$END*)
  1269. PROCEDURE VDGetKeyColorRange*(ci: VideoDigitizerComponent; VAR minRGB: Quickdraw.RGBColor; VAR maxRGB: Quickdraw.RGBColor): VideoDigitizerError;
  1270.     (*$IF NOT GENERATINGCFM*)
  1271.     INLINE PASCAL $2F3C, $8, $20, $7000, $A82A;
  1272.     (*$END*)
  1273. PROCEDURE VDSetDigitizerUserInterrupt*(ci: VideoDigitizerComponent; flags: LONGINT; userInterruptProc: VdigIntUPP; refcon: LONGINT): VideoDigitizerError;
  1274.     (*$IF NOT GENERATINGCFM*)
  1275.     INLINE PASCAL $2F3C, $C, $21, $7000, $A82A;
  1276.     (*$END*)
  1277. PROCEDURE VDSetInputColorSpaceMode*(ci: VideoDigitizerComponent; colorSpaceMode: INTEGER): VideoDigitizerError;
  1278.     (*$IF NOT GENERATINGCFM*)
  1279.     INLINE PASCAL $2F3C, $2, $22, $7000, $A82A;
  1280.     (*$END*)
  1281. PROCEDURE VDGetInputColorSpaceMode*(ci: VideoDigitizerComponent; VAR colorSpaceMode: INTEGER): VideoDigitizerError;
  1282.     (*$IF NOT GENERATINGCFM*)
  1283.     INLINE PASCAL $2F3C, $4, $23, $7000, $A82A;
  1284.     (*$END*)
  1285. PROCEDURE VDSetClipState*(ci: VideoDigitizerComponent; clipEnable: INTEGER): VideoDigitizerError;
  1286.     (*$IF NOT GENERATINGCFM*)
  1287.     INLINE PASCAL $2F3C, $2, $24, $7000, $A82A;
  1288.     (*$END*)
  1289. PROCEDURE VDGetClipState*(ci: VideoDigitizerComponent; VAR clipEnable: INTEGER): VideoDigitizerError;
  1290.     (*$IF NOT GENERATINGCFM*)
  1291.     INLINE PASCAL $2F3C, $4, $25, $7000, $A82A;
  1292.     (*$END*)
  1293. PROCEDURE VDSetClipRgn*(ci: VideoDigitizerComponent; clipRegion: Quickdraw.RgnHandle): VideoDigitizerError;
  1294.     (*$IF NOT GENERATINGCFM*)
  1295.     INLINE PASCAL $2F3C, $4, $26, $7000, $A82A;
  1296.     (*$END*)
  1297. PROCEDURE VDClearClipRgn*(ci: VideoDigitizerComponent; clipRegion: Quickdraw.RgnHandle): VideoDigitizerError;
  1298.     (*$IF NOT GENERATINGCFM*)
  1299.     INLINE PASCAL $2F3C, $4, $27, $7000, $A82A;
  1300.     (*$END*)
  1301. PROCEDURE VDGetCLUTInUse*(ci: VideoDigitizerComponent; VAR colorTableHandle: Quickdraw.CTabHandle): VideoDigitizerError;
  1302.     (*$IF NOT GENERATINGCFM*)
  1303.     INLINE PASCAL $2F3C, $4, $28, $7000, $A82A;
  1304.     (*$END*)
  1305. PROCEDURE VDSetPLLFilterType*(ci: VideoDigitizerComponent; pllType: INTEGER): VideoDigitizerError;
  1306.     (*$IF NOT GENERATINGCFM*)
  1307.     INLINE PASCAL $2F3C, $2, $29, $7000, $A82A;
  1308.     (*$END*)
  1309. PROCEDURE VDGetPLLFilterType*(ci: VideoDigitizerComponent; VAR pllType: INTEGER): VideoDigitizerError;
  1310.     (*$IF NOT GENERATINGCFM*)
  1311.     INLINE PASCAL $2F3C, $4, $2A, $7000, $A82A;
  1312.     (*$END*)
  1313. PROCEDURE VDGetMaskandValue*(ci: VideoDigitizerComponent; blendLevel: INTEGER; VAR mask: LONGINT; VAR value: LONGINT): VideoDigitizerError;
  1314.     (*$IF NOT GENERATINGCFM*)
  1315.     INLINE PASCAL $2F3C, $A, $2B, $7000, $A82A;
  1316.     (*$END*)
  1317. PROCEDURE VDSetMasterBlendLevel*(ci: VideoDigitizerComponent; VAR blendLevel: INTEGER): VideoDigitizerError;
  1318.     (*$IF NOT GENERATINGCFM*)
  1319.     INLINE PASCAL $2F3C, $4, $2C, $7000, $A82A;
  1320.     (*$END*)
  1321. PROCEDURE VDSetPlayThruDestination*(ci: VideoDigitizerComponent; dest: Quickdraw.PixMapHandle; VAR destRect: Types.Rect; VAR m: ImageCompression.MatrixRecord; mask: Quickdraw.RgnHandle): VideoDigitizerError;
  1322.     (*$IF NOT GENERATINGCFM*)
  1323.     INLINE PASCAL $2F3C, $10, $2D, $7000, $A82A;
  1324.     (*$END*)
  1325. PROCEDURE VDSetPlayThruOnOff*(ci: VideoDigitizerComponent; state: INTEGER): VideoDigitizerError;
  1326.     (*$IF NOT GENERATINGCFM*)
  1327.     INLINE PASCAL $2F3C, $2, $2E, $7000, $A82A;
  1328.     (*$END*)
  1329. PROCEDURE VDSetFieldPreference*(ci: VideoDigitizerComponent; fieldFlag: INTEGER): VideoDigitizerError;
  1330.     (*$IF NOT GENERATINGCFM*)
  1331.     INLINE PASCAL $2F3C, $2, $2F, $7000, $A82A;
  1332.     (*$END*)
  1333. PROCEDURE VDGetFieldPreference*(ci: VideoDigitizerComponent; VAR fieldFlag: INTEGER): VideoDigitizerError;
  1334.     (*$IF NOT GENERATINGCFM*)
  1335.     INLINE PASCAL $2F3C, $4, $30, $7000, $A82A;
  1336.     (*$END*)
  1337. PROCEDURE VDPreflightDestination*(ci: VideoDigitizerComponent; VAR digitizerRect: Types.Rect; VAR dest: Quickdraw.PixMap; VAR destRect: Types.Rect; VAR m: ImageCompression.MatrixRecord): VideoDigitizerError;
  1338.     (*$IF NOT GENERATINGCFM*)
  1339.     INLINE PASCAL $2F3C, $10, $32, $7000, $A82A;
  1340.     (*$END*)
  1341. PROCEDURE VDPreflightGlobalRect*(ci: VideoDigitizerComponent; theWindow: Quickdraw.GrafPtr; VAR globalRect: Types.Rect): VideoDigitizerError;
  1342.     (*$IF NOT GENERATINGCFM*)
  1343.     INLINE PASCAL $2F3C, $8, $33, $7000, $A82A;
  1344.     (*$END*)
  1345. PROCEDURE VDSetPlayThruGlobalRect*(ci: VideoDigitizerComponent; theWindow: Quickdraw.GrafPtr; VAR globalRect: Types.Rect): VideoDigitizerError;
  1346.     (*$IF NOT GENERATINGCFM*)
  1347.     INLINE PASCAL $2F3C, $8, $34, $7000, $A82A;
  1348.     (*$END*)
  1349. PROCEDURE VDSetInputGammaRecord*(ci: VideoDigitizerComponent; inputGammaPtr: Video.VDGamRecPtr): VideoDigitizerError;
  1350.     (*$IF NOT GENERATINGCFM*)
  1351.     INLINE PASCAL $2F3C, $4, $35, $7000, $A82A;
  1352.     (*$END*)
  1353. PROCEDURE VDGetInputGammaRecord*(ci: VideoDigitizerComponent; VAR inputGammaPtr: Video.VDGamRecPtr): VideoDigitizerError;
  1354.     (*$IF NOT GENERATINGCFM*)
  1355.     INLINE PASCAL $2F3C, $4, $36, $7000, $A82A;
  1356.     (*$END*)
  1357. PROCEDURE VDSetBlackLevelValue*(ci: VideoDigitizerComponent; VAR blackLevel: INTEGER): VideoDigitizerError;
  1358.     (*$IF NOT GENERATINGCFM*)
  1359.     INLINE PASCAL $2F3C, $4, $37, $7000, $A82A;
  1360.     (*$END*)
  1361. PROCEDURE VDGetBlackLevelValue*(ci: VideoDigitizerComponent; VAR blackLevel: INTEGER): VideoDigitizerError;
  1362.     (*$IF NOT GENERATINGCFM*)
  1363.     INLINE PASCAL $2F3C, $4, $38, $7000, $A82A;
  1364.     (*$END*)
  1365. PROCEDURE VDSetWhiteLevelValue*(ci: VideoDigitizerComponent; VAR whiteLevel: INTEGER): VideoDigitizerError;
  1366.     (*$IF NOT GENERATINGCFM*)
  1367.     INLINE PASCAL $2F3C, $4, $39, $7000, $A82A;
  1368.     (*$END*)
  1369. PROCEDURE VDGetWhiteLevelValue*(ci: VideoDigitizerComponent; VAR whiteLevel: INTEGER): VideoDigitizerError;
  1370.     (*$IF NOT GENERATINGCFM*)
  1371.     INLINE PASCAL $2F3C, $4, $3A, $7000, $A82A;
  1372.     (*$END*)
  1373. PROCEDURE VDGetVideoDefaults*(ci: VideoDigitizerComponent; VAR blackLevel: INTEGER; VAR whiteLevel: INTEGER; VAR brightness: INTEGER; VAR hue: INTEGER; VAR saturation: INTEGER; VAR contrast: INTEGER; VAR sharpness: INTEGER): VideoDigitizerError;
  1374.     (*$IF NOT GENERATINGCFM*)
  1375.     INLINE PASCAL $2F3C, $1C, $3B, $7000, $A82A;
  1376.     (*$END*)
  1377. PROCEDURE VDGetNumberOfInputs*(ci: VideoDigitizerComponent; VAR inputs: INTEGER): VideoDigitizerError;
  1378.     (*$IF NOT GENERATINGCFM*)
  1379.     INLINE PASCAL $2F3C, $4, $3C, $7000, $A82A;
  1380.     (*$END*)
  1381. PROCEDURE VDGetInputFormat*(ci: VideoDigitizerComponent; input: INTEGER; VAR format: INTEGER): VideoDigitizerError;
  1382.     (*$IF NOT GENERATINGCFM*)
  1383.     INLINE PASCAL $2F3C, $6, $3D, $7000, $A82A;
  1384.     (*$END*)
  1385. PROCEDURE VDSetInput*(ci: VideoDigitizerComponent; input: INTEGER): VideoDigitizerError;
  1386.     (*$IF NOT GENERATINGCFM*)
  1387.     INLINE PASCAL $2F3C, $2, $3E, $7000, $A82A;
  1388.     (*$END*)
  1389. PROCEDURE VDGetInput*(ci: VideoDigitizerComponent; VAR input: INTEGER): VideoDigitizerError;
  1390.     (*$IF NOT GENERATINGCFM*)
  1391.     INLINE PASCAL $2F3C, $4, $3F, $7000, $A82A;
  1392.     (*$END*)
  1393. PROCEDURE VDSetInputStandard*(ci: VideoDigitizerComponent; inputStandard: INTEGER): VideoDigitizerError;
  1394.     (*$IF NOT GENERATINGCFM*)
  1395.     INLINE PASCAL $2F3C, $2, $40, $7000, $A82A;
  1396.     (*$END*)
  1397. PROCEDURE VDSetupBuffers*(ci: VideoDigitizerComponent; bufferList: VdigBufferRecListHandle): VideoDigitizerError;
  1398.     (*$IF NOT GENERATINGCFM*)
  1399.     INLINE PASCAL $2F3C, $4, $41, $7000, $A82A;
  1400.     (*$END*)
  1401. PROCEDURE VDGrabOneFrameAsync*(ci: VideoDigitizerComponent; buffer: INTEGER): VideoDigitizerError;
  1402.     (*$IF NOT GENERATINGCFM*)
  1403.     INLINE PASCAL $2F3C, $2, $42, $7000, $A82A;
  1404.     (*$END*)
  1405. PROCEDURE VDDone*(ci: VideoDigitizerComponent; buffer: INTEGER): VideoDigitizerError;
  1406.     (*$IF NOT GENERATINGCFM*)
  1407.     INLINE PASCAL $2F3C, $2, $43, $7000, $A82A;
  1408.     (*$END*)
  1409. PROCEDURE VDSetCompression*(ci: VideoDigitizerComponent; compressType: Types.OSType; depth: INTEGER; VAR bounds: Types.Rect; spatialQuality: ImageCompression.CodecQ; temporalQuality: ImageCompression.CodecQ; keyFrameRate: LONGINT): VideoDigitizerError;
  1410.     (*$IF NOT GENERATINGCFM*)
  1411.     INLINE PASCAL $2F3C, $16, $44, $7000, $A82A;
  1412.     (*$END*)
  1413. PROCEDURE VDCompressOneFrameAsync*(ci: VideoDigitizerComponent): VideoDigitizerError;
  1414.     (*$IF NOT GENERATINGCFM*)
  1415.     INLINE PASCAL $2F3C, 0, $45, $7000, $A82A;
  1416.     (*$END*)
  1417. PROCEDURE VDCompressDone*(ci: VideoDigitizerComponent; VAR done: BOOLEAN; VAR theData: Types.Ptr; VAR dataSize: LONGINT; VAR similarity: Types.UInt8; VAR t: Movies.TimeRecord): VideoDigitizerError;
  1418.     (*$IF NOT GENERATINGCFM*)
  1419.     INLINE PASCAL $2F3C, $14, $46, $7000, $A82A;
  1420.     (*$END*)
  1421. PROCEDURE VDReleaseCompressBuffer*(ci: VideoDigitizerComponent; bufferAddr: Types.Ptr): VideoDigitizerError;
  1422.     (*$IF NOT GENERATINGCFM*)
  1423.     INLINE PASCAL $2F3C, $4, $47, $7000, $A82A;
  1424.     (*$END*)
  1425. PROCEDURE VDGetImageDescription*(ci: VideoDigitizerComponent; desc: ImageCompression.ImageDescriptionHandle): VideoDigitizerError;
  1426.     (*$IF NOT GENERATINGCFM*)
  1427.     INLINE PASCAL $2F3C, $4, $48, $7000, $A82A;
  1428.     (*$END*)
  1429. PROCEDURE VDResetCompressSequence*(ci: VideoDigitizerComponent): VideoDigitizerError;
  1430.     (*$IF NOT GENERATINGCFM*)
  1431.     INLINE PASCAL $2F3C, 0, $49, $7000, $A82A;
  1432.     (*$END*)
  1433. PROCEDURE VDSetCompressionOnOff*(ci: VideoDigitizerComponent; state: BOOLEAN): VideoDigitizerError;
  1434.     (*$IF NOT GENERATINGCFM*)
  1435.     INLINE PASCAL $2F3C, $2, $4A, $7000, $A82A;
  1436.     (*$END*)
  1437. PROCEDURE VDGetCompressionTypes*(ci: VideoDigitizerComponent; h: VDCompressionListHandle): VideoDigitizerError;
  1438.     (*$IF NOT GENERATINGCFM*)
  1439.     INLINE PASCAL $2F3C, $4, $4B, $7000, $A82A;
  1440.     (*$END*)
  1441. PROCEDURE VDSetTimeBase*(ci: VideoDigitizerComponent; t: Movies.TimeBase): VideoDigitizerError;
  1442.     (*$IF NOT GENERATINGCFM*)
  1443.     INLINE PASCAL $2F3C, $4, $4C, $7000, $A82A;
  1444.     (*$END*)
  1445. PROCEDURE VDSetFrameRate*(ci: VideoDigitizerComponent; framesPerSecond: Types.Fixed): VideoDigitizerError;
  1446.     (*$IF NOT GENERATINGCFM*)
  1447.     INLINE PASCAL $2F3C, $4, $4D, $7000, $A82A;
  1448.     (*$END*)
  1449. PROCEDURE VDGetDataRate*(ci: VideoDigitizerComponent; VAR milliSecPerFrame: LONGINT; VAR framesPerSecond: Types.Fixed; VAR bytesPerSecond: LONGINT): VideoDigitizerError;
  1450.     (*$IF NOT GENERATINGCFM*)
  1451.     INLINE PASCAL $2F3C, $C, $4E, $7000, $A82A;
  1452.     (*$END*)
  1453. PROCEDURE VDGetSoundInputDriver*(ci: VideoDigitizerComponent; VAR soundDriverName: Types.Str255): VideoDigitizerError;
  1454.     (*$IF NOT GENERATINGCFM*)
  1455.     INLINE PASCAL $2F3C, $4, $4F, $7000, $A82A;
  1456.     (*$END*)
  1457. PROCEDURE VDGetDMADepths*(ci: VideoDigitizerComponent; VAR depthArray: LONGINT; VAR preferredDepth: LONGINT): VideoDigitizerError;
  1458.     (*$IF NOT GENERATINGCFM*)
  1459.     INLINE PASCAL $2F3C, $8, $50, $7000, $A82A;
  1460.     (*$END*)
  1461. PROCEDURE VDGetPreferredTimeScale*(ci: VideoDigitizerComponent; VAR preferred: Movies.TimeScale): VideoDigitizerError;
  1462.     (*$IF NOT GENERATINGCFM*)
  1463.     INLINE PASCAL $2F3C, $4, $51, $7000, $A82A;
  1464.     (*$END*)
  1465. PROCEDURE VDReleaseAsyncBuffers*(ci: VideoDigitizerComponent): VideoDigitizerError;
  1466.     (*$IF NOT GENERATINGCFM*)
  1467.     INLINE PASCAL $2F3C, 0, $52, $7000, $A82A;
  1468.     (*$END*)
  1469. (* 83 is reserved for compatibility reasons *)
  1470. PROCEDURE VDSetDataRate*(ci: VideoDigitizerComponent; bytesPerSecond: LONGINT): VideoDigitizerError;
  1471.     (*$IF NOT GENERATINGCFM*)
  1472.     INLINE PASCAL $2F3C, $4, $54, $7000, $A82A;
  1473.     (*$END*)
  1474. PROCEDURE VDGetTimeCode*(ci: VideoDigitizerComponent; VAR atTime: Movies.TimeRecord; timeCodeFormat: (*ΔΔUNIVΔΔ*) Types.Ptr; timeCodeTime: (*ΔΔUNIVΔΔ*) Types.Ptr): VideoDigitizerError;
  1475.     (*$IF NOT GENERATINGCFM*)
  1476.     INLINE PASCAL $2F3C, $C, $55, $7000, $A82A;
  1477.     (*$END*)
  1478. PROCEDURE VDUseSafeBuffers*(ci: VideoDigitizerComponent; useSafeBuffers: BOOLEAN): VideoDigitizerError;
  1479.     (*$IF NOT GENERATINGCFM*)
  1480.     INLINE PASCAL $2F3C, $2, $56, $7000, $A82A;
  1481.     (*$END*)
  1482.  
  1483. CONST
  1484.     kSelectVDGetMaxSrcRect*        = $1;
  1485.     kSelectVDGetActiveSrcRect*    = $2;
  1486.     kSelectVDSetDigitizerRect*    = $3;
  1487.     kSelectVDGetDigitizerRect*    = $4;
  1488.     kSelectVDGetVBlankRect*        = $5;
  1489.     kSelectVDGetMaskPixMap*        = $6;
  1490.     kSelectVDGetPlayThruDestination* = $8;
  1491.     kSelectVDUseThisCLUT*        = $9;
  1492.     kSelectVDSetInputGammaValue*    = $A;
  1493.     kSelectVDGetInputGammaValue*    = $B;
  1494.     kSelectVDSetBrightness*        = $C;
  1495.     kSelectVDGetBrightness*        = $D;
  1496.     kSelectVDSetContrast*        = $E;
  1497.     kSelectVDSetHue*                = $F;
  1498.     kSelectVDSetSharpness*        = $10;
  1499.     kSelectVDSetSaturation*        = $11;
  1500.     kSelectVDGetContrast*        = $12;
  1501.     kSelectVDGetHue*                = $13;
  1502.     kSelectVDGetSharpness*        = $14;
  1503.     kSelectVDGetSaturation*        = $15;
  1504.     kSelectVDGrabOneFrame*        = $16;
  1505.     kSelectVDGetMaxAuxBuffer*    = $17;
  1506.     kSelectVDGetDigitizerInfo*    = $19;
  1507.     kSelectVDGetCurrentFlags*    = $1A;
  1508.     kSelectVDSetKeyColor*        = $1B;
  1509.     kSelectVDGetKeyColor*        = $1C;
  1510.     kSelectVDAddKeyColor*        = $1D;
  1511.     kSelectVDGetNextKeyColor*    = $1E;
  1512.     kSelectVDSetKeyColorRange*    = $1F;
  1513.     kSelectVDGetKeyColorRange*    = $20;
  1514.     kSelectVDSetDigitizerUserInterrupt* = $21;
  1515.     kSelectVDSetInputColorSpaceMode* = $22;
  1516.     kSelectVDGetInputColorSpaceMode* = $23;
  1517.     kSelectVDSetClipState*        = $24;
  1518.     kSelectVDGetClipState*        = $25;
  1519.     kSelectVDSetClipRgn*            = $26;
  1520.     kSelectVDClearClipRgn*        = $27;
  1521.     kSelectVDGetCLUTInUse*        = $28;
  1522.     kSelectVDSetPLLFilterType*    = $29;
  1523.     kSelectVDGetPLLFilterType*    = $2A;
  1524.     kSelectVDGetMaskandValue*    = $2B;
  1525.     kSelectVDSetMasterBlendLevel* = $2C;
  1526.     kSelectVDSetPlayThruDestination* = $2D;
  1527.     kSelectVDSetPlayThruOnOff*    = $2E;
  1528.     kSelectVDSetFieldPreference*    = $2F;
  1529.     kSelectVDGetFieldPreference*    = $30;
  1530.     kSelectVDPreflightDestination* = $32;
  1531.     kSelectVDPreflightGlobalRect* = $33;
  1532.     kSelectVDSetPlayThruGlobalRect* = $34;
  1533.     kSelectVDSetInputGammaRecord* = $35;
  1534.     kSelectVDGetInputGammaRecord* = $36;
  1535.     kSelectVDSetBlackLevelValue*    = $37;
  1536.     kSelectVDGetBlackLevelValue*    = $38;
  1537.     kSelectVDSetWhiteLevelValue*    = $39;
  1538.     kSelectVDGetWhiteLevelValue*    = $3A;
  1539.     kSelectVDGetVideoDefaults*    = $3B;
  1540.     kSelectVDGetNumberOfInputs*    = $3C;
  1541.     kSelectVDGetInputFormat*        = $3D;
  1542.     kSelectVDSetInput*            = $3E;
  1543.     kSelectVDGetInput*            = $3F;
  1544.     kSelectVDSetInputStandard*    = $40;
  1545.     kSelectVDSetupBuffers*        = $41;
  1546.     kSelectVDGrabOneFrameAsync*    = $42;
  1547.     kSelectVDDone*                = $43;
  1548.     kSelectVDSetCompression*        = $44;
  1549.     kSelectVDCompressOneFrameAsync* = $45;
  1550.     kSelectVDCompressDone*        = $46;
  1551.     kSelectVDReleaseCompressBuffer* = $47;
  1552.     kSelectVDGetImageDescription* = $48;
  1553.     kSelectVDResetCompressSequence* = $49;
  1554.     kSelectVDSetCompressionOnOff* = $4A;
  1555.     kSelectVDGetCompressionTypes* = $4B;
  1556.     kSelectVDSetTimeBase*        = $4C;
  1557.     kSelectVDSetFrameRate*        = $4D;
  1558.     kSelectVDGetDataRate*        = $4E;
  1559.     kSelectVDGetSoundInputDriver* = $4F;
  1560.     kSelectVDGetDMADepths*        = $50;
  1561.     kSelectVDGetPreferredTimeScale* = $51;
  1562.     kSelectVDReleaseAsyncBuffers* = $52;
  1563.     kSelectVDSetDataRate*        = $54;
  1564.     kSelectVDGetTimeCode*        = $55;
  1565.     kSelectVDUseSafeBuffers*        = $56;
  1566.  
  1567.     StandardCompressionType*        = LONG("scdi");
  1568.     StandardCompressionSubType*    = LONG("imag");
  1569.  
  1570. TYPE
  1571.     SCModalFilterProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (theDialog: Dialogs.DialogPtr; VAR theEvent: Events.EventRecord; VAR itemHit: INTEGER; refcon: LONGINT): BOOLEAN;
  1572.     SCModalHookProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (theDialog: Dialogs.DialogPtr; itemHit: INTEGER; params: (*ΔΔUNIVΔΔ*) Types.Ptr; refcon: LONGINT): INTEGER;
  1573.     SCModalFilterUPP* = Types.UniversalProcPtr;
  1574.     SCModalHookUPP* = Types.UniversalProcPtr;
  1575.  
  1576.  
  1577. CONST
  1578.     scListEveryCodec*            = ASH(1,1);
  1579.     scAllowZeroFrameRate*        = ASH(1,2);
  1580.     scAllowZeroKeyFrameRate*        = ASH(1,3);
  1581.     scShowBestDepth*                = ASH(1,4);
  1582.     scUseMovableModal*            = ASH(1,5);
  1583.  
  1584. (*    Possible test flags for setting test image.*)
  1585.     scPreferCropping*            = ASH(1,0);
  1586.     scPreferScaling*                = ASH(1,1);
  1587.     scPreferScalingAndCropping*    = scPreferScaling + scPreferCropping;
  1588.  
  1589. (*    Dimensions of the image preview box.*)
  1590.     scTestImageWidth*            = 80;
  1591.     scTestImageHeight*            = 80;
  1592.  
  1593. (*    Possible items returned by hookProc.*)
  1594.     scOKItem*                    = 1;
  1595.     scCancelItem*                = 2;
  1596.     scCustomItem*                = 3;
  1597.  
  1598. (*    Result returned when user cancelled.*)
  1599.     scUserCancelled*                = 1;
  1600.  
  1601.  
  1602. TYPE
  1603.     SCSpatialSettings* = RECORD
  1604.         codecType*:                ImageCompression.CodecType;
  1605.         codec*:                    ImageCompression.CodecComponent;
  1606.         depth*:                    INTEGER;
  1607.         spatialQuality*:            ImageCompression.CodecQ;
  1608.     END;
  1609.  
  1610.     SCTemporalSettings* = RECORD
  1611.         temporalQuality*:        ImageCompression.CodecQ;
  1612.         frameRate*:                Types.Fixed;
  1613.         keyFrameRate*:            LONGINT;
  1614.     END;
  1615.  
  1616.     SCDataRateSettings* = RECORD
  1617.         dataRate*:                LONGINT;
  1618.         frameDuration*:            LONGINT;
  1619.         minSpatialQuality*:        ImageCompression.CodecQ;
  1620.         minTemporalQuality*:        ImageCompression.CodecQ;
  1621.     END;
  1622.  
  1623.     SCExtendedProcs* = RECORD
  1624.         filterProc*:                SCModalFilterUPP;
  1625.         hookProc*:                SCModalHookUPP;
  1626.         refcon*:                    LONGINT;
  1627.         customName*:                Types.Str31;
  1628.     END;
  1629.  
  1630. (*    Get/SetInfo selectors*)
  1631.  
  1632. CONST
  1633.     scSpatialSettingsType*        = LONG("sptl");                        (* pointer to SCSpatialSettings struct*)
  1634.     scTemporalSettingsType*        = LONG("tprl");                        (* pointer to SCTemporalSettings struct*)
  1635.     scDataRateSettingsType*        = LONG("drat");                        (* pointer to SCDataRateSettings struct*)
  1636.     scColorTableType*            = LONG("clut");                        (* pointer to Quickdraw.CTabHandle*)
  1637.     scProgressProcType*            = LONG("prog");                        (* pointer to ProgressRecord struct*)
  1638.     scExtendedProcsType*            = LONG("xprc");                        (* pointer to SCExtendedProcs struct*)
  1639.     scPreferenceFlagsType*        = LONG("pref");                        (* pointer to long*)
  1640.     scSettingsStateType*            = LONG("ssta");                        (* pointer to Types.Handle*)
  1641.     scSequenceIDType*            = LONG("sequ");                        (* pointer to ImageCompression.ImageSequence*)
  1642.     scWindowPositionType*        = LONG("wndw");                        (* pointer to Types.Point*)
  1643.     scCodecFlagsType*            = LONG("cflg");                        (* pointer to ImageCompression.CodecFlags*)
  1644.     scCodecSettingsType*            = LONG("cdec");                        (* pointer to Types.Handle*)
  1645.     scForceKeyValueType*            = LONG("ksim");
  1646.  
  1647. (*    scTypeNotFoundErr returned by Get/SetInfo when type cannot be found.*)
  1648. (** These are Progress procedures **)
  1649.  
  1650. PROCEDURE SCPositionRect*(ci: Components.ComponentInstance; VAR rp: Types.Rect; VAR where: Types.Point): Components.ComponentResult;
  1651.     (*$IF NOT GENERATINGCFM*)
  1652.     INLINE PASCAL $2F3C, $8, $2, $7000, $A82A;
  1653.     (*$END*)
  1654. PROCEDURE SCPositionDialog*(ci: Components.ComponentInstance; id: INTEGER; VAR where: Types.Point): Components.ComponentResult;
  1655.     (*$IF NOT GENERATINGCFM*)
  1656.     INLINE PASCAL $2F3C, $6, $3, $7000, $A82A;
  1657.     (*$END*)
  1658. PROCEDURE SCSetTestImagePictHandle*(ci: Components.ComponentInstance; testPict: Quickdraw.PicHandle; VAR testRect: Types.Rect; testFlags: INTEGER): Components.ComponentResult;
  1659.     (*$IF NOT GENERATINGCFM*)
  1660.     INLINE PASCAL $2F3C, $A, $4, $7000, $A82A;
  1661.     (*$END*)
  1662. PROCEDURE SCSetTestImagePictFile*(ci: Components.ComponentInstance; testFileRef: INTEGER; VAR testRect: Types.Rect; testFlags: INTEGER): Components.ComponentResult;
  1663.     (*$IF NOT GENERATINGCFM*)
  1664.     INLINE PASCAL $2F3C, $8, $5, $7000, $A82A;
  1665.     (*$END*)
  1666. PROCEDURE SCSetTestImagePixMap*(ci: Components.ComponentInstance; testPixMap: Quickdraw.PixMapHandle; VAR testRect: Types.Rect; testFlags: INTEGER): Components.ComponentResult;
  1667.     (*$IF NOT GENERATINGCFM*)
  1668.     INLINE PASCAL $2F3C, $A, $6, $7000, $A82A;
  1669.     (*$END*)
  1670. PROCEDURE SCGetBestDeviceRect*(ci: Components.ComponentInstance; VAR r: Types.Rect): Components.ComponentResult;
  1671.     (*$IF NOT GENERATINGCFM*)
  1672.     INLINE PASCAL $2F3C, $4, $7, $7000, $A82A;
  1673.     (*$END*)
  1674. PROCEDURE SCRequestImageSettings*(ci: Components.ComponentInstance): Components.ComponentResult;
  1675.     (*$IF NOT GENERATINGCFM*)
  1676.     INLINE PASCAL $2F3C, 0, $A, $7000, $A82A;
  1677.     (*$END*)
  1678. PROCEDURE SCCompressImage*(ci: Components.ComponentInstance; src: Quickdraw.PixMapHandle; (*CONST*)VAR srcRect: Types.Rect; VAR desc: ImageCompression.ImageDescriptionHandle; VAR data: Types.Handle): Components.ComponentResult;
  1679.     (*$IF NOT GENERATINGCFM*)
  1680.     INLINE PASCAL $2F3C, $10, $B, $7000, $A82A;
  1681.     (*$END*)
  1682. PROCEDURE SCCompressPicture*(ci: Components.ComponentInstance; srcPicture: Quickdraw.PicHandle; dstPicture: Quickdraw.PicHandle): Components.ComponentResult;
  1683.     (*$IF NOT GENERATINGCFM*)
  1684.     INLINE PASCAL $2F3C, $8, $C, $7000, $A82A;
  1685.     (*$END*)
  1686. PROCEDURE SCCompressPictureFile*(ci: Components.ComponentInstance; srcRefNum: INTEGER; dstRefNum: INTEGER): Components.ComponentResult;
  1687.     (*$IF NOT GENERATINGCFM*)
  1688.     INLINE PASCAL $2F3C, $4, $D, $7000, $A82A;
  1689.     (*$END*)
  1690. PROCEDURE SCRequestSequenceSettings*(ci: Components.ComponentInstance): Components.ComponentResult;
  1691.     (*$IF NOT GENERATINGCFM*)
  1692.     INLINE PASCAL $2F3C, 0, $E, $7000, $A82A;
  1693.     (*$END*)
  1694. PROCEDURE SCCompressSequenceBegin*(ci: Components.ComponentInstance; src: Quickdraw.PixMapHandle; (*CONST*)VAR srcRect: Types.Rect; VAR desc: ImageCompression.ImageDescriptionHandle): Components.ComponentResult;
  1695.     (*$IF NOT GENERATINGCFM*)
  1696.     INLINE PASCAL $2F3C, $C, $F, $7000, $A82A;
  1697.     (*$END*)
  1698. PROCEDURE SCCompressSequenceFrame*(ci: Components.ComponentInstance; src: Quickdraw.PixMapHandle; (*CONST*)VAR srcRect: Types.Rect; VAR data: Types.Handle; VAR dataSize: LONGINT; VAR notSyncFlag: INTEGER): Components.ComponentResult;
  1699.     (*$IF NOT GENERATINGCFM*)
  1700.     INLINE PASCAL $2F3C, $14, $10, $7000, $A82A;
  1701.     (*$END*)
  1702. PROCEDURE SCCompressSequenceEnd*(ci: Components.ComponentInstance): Components.ComponentResult;
  1703.     (*$IF NOT GENERATINGCFM*)
  1704.     INLINE PASCAL $2F3C, 0, $11, $7000, $A82A;
  1705.     (*$END*)
  1706. PROCEDURE SCDefaultPictHandleSettings*(ci: Components.ComponentInstance; srcPicture: Quickdraw.PicHandle; motion: INTEGER): Components.ComponentResult;
  1707.     (*$IF NOT GENERATINGCFM*)
  1708.     INLINE PASCAL $2F3C, $6, $12, $7000, $A82A;
  1709.     (*$END*)
  1710. PROCEDURE SCDefaultPictFileSettings*(ci: Components.ComponentInstance; srcRef: INTEGER; motion: INTEGER): Components.ComponentResult;
  1711.     (*$IF NOT GENERATINGCFM*)
  1712.     INLINE PASCAL $2F3C, $4, $13, $7000, $A82A;
  1713.     (*$END*)
  1714. PROCEDURE SCDefaultPixMapSettings*(ci: Components.ComponentInstance; src: Quickdraw.PixMapHandle; motion: INTEGER): Components.ComponentResult;
  1715.     (*$IF NOT GENERATINGCFM*)
  1716.     INLINE PASCAL $2F3C, $6, $14, $7000, $A82A;
  1717.     (*$END*)
  1718. PROCEDURE SCGetInfo*(ci: Components.ComponentInstance; infoType: Types.OSType; info: (*ΔΔUNIVΔΔ*) Types.Ptr): Components.ComponentResult;
  1719.     (*$IF NOT GENERATINGCFM*)
  1720.     INLINE PASCAL $2F3C, $8, $15, $7000, $A82A;
  1721.     (*$END*)
  1722. PROCEDURE SCSetInfo*(ci: Components.ComponentInstance; infoType: Types.OSType; info: (*ΔΔUNIVΔΔ*) Types.Ptr): Components.ComponentResult;
  1723.     (*$IF NOT GENERATINGCFM*)
  1724.     INLINE PASCAL $2F3C, $8, $16, $7000, $A82A;
  1725.     (*$END*)
  1726. PROCEDURE SCNewGWorld*(ci: Components.ComponentInstance; VAR gwp: QDOffscreen.GWorldPtr; VAR rp: Types.Rect; flags: QDOffscreen.GWorldFlags): Components.ComponentResult;
  1727.     (*$IF NOT GENERATINGCFM*)
  1728.     INLINE PASCAL $2F3C, $C, $17, $7000, $A82A;
  1729.     (*$END*)
  1730. PROCEDURE SCSetCompressFlags*(ci: Components.ComponentInstance; flags: LONGINT): Components.ComponentResult;
  1731.     (*$IF NOT GENERATINGCFM*)
  1732.     INLINE PASCAL $2F3C, $4, $18, $7000, $A82A;
  1733.     (*$END*)
  1734. PROCEDURE SCGetCompressFlags*(ci: Components.ComponentInstance; VAR flags: LONGINT): Components.ComponentResult;
  1735.     (*$IF NOT GENERATINGCFM*)
  1736.     INLINE PASCAL $2F3C, $4, $19, $7000, $A82A;
  1737.     (*$END*)
  1738.  
  1739. TYPE
  1740.     SCParams* = RECORD
  1741.         flags*:                    LONGINT;
  1742.         theCodecType*:            ImageCompression.CodecType;
  1743.         theCodec*:                ImageCompression.CodecComponent;
  1744.         spatialQuality*:            ImageCompression.CodecQ;
  1745.         temporalQuality*:        ImageCompression.CodecQ;
  1746.         depth*:                    INTEGER;
  1747.         frameRate*:                Types.Fixed;
  1748.         keyFrameRate*:            LONGINT;
  1749.         reserved1*:                LONGINT;
  1750.         reserved2*:                LONGINT;
  1751.     END;
  1752.  
  1753.  
  1754. CONST
  1755.     scGetCompression*            = 1;
  1756.     scShowMotionSettings*        = ASH(1,0);
  1757.     scSettingsChangedItem*        = -1;
  1758.  
  1759.     scCompressFlagIgnoreIdenticalFrames* = 1;
  1760.  
  1761.  
  1762. PROCEDURE SCGetCompressionExtended*(ci: Components.ComponentInstance; VAR params: SCParams; where: Types.Point; filterProc: SCModalFilterUPP; hookProc: SCModalHookUPP; refcon: LONGINT; customName: Types.StringPtr): Components.ComponentResult;
  1763.     (*$IF NOT GENERATINGCFM*)
  1764.     INLINE PASCAL $2F3C, $18, $1, $7000, $A82A;
  1765.     (*$END*)
  1766.  
  1767. CONST
  1768.     kSCPositionRectSelect*        = $2;
  1769.     kSCPositionDialogSelect*        = $3;
  1770.     kSCSetTestImagePictHandleSelect* = $4;
  1771.     kSCSetTestImagePictFileSelect* = $5;
  1772.     kSCSetTestImagePixMapSelect*    = $6;
  1773.     kSCGetBestDeviceRectSelect*    = $7;
  1774.     kSCRequestImageSettingsSelect* = $A;
  1775.     kSCCompressImageSelect*        = $B;
  1776.     kSCCompressPictureSelect*    = $C;
  1777.     kSCCompressPictureFileSelect* = $D;
  1778.     kSCRequestSequenceSettingsSelect* = $E;
  1779.     kSCCompressSequenceBeginSelect* = $F;
  1780.     kSCCompressSequenceFrameSelect* = $10;
  1781.     kSCCompressSequenceEndSelect* = $11;
  1782.     kSCDefaultPictHandleSettingsSelect* = $12;
  1783.     kSCDefaultPictFileSettingsSelect* = $13;
  1784.     kSCDefaultPixMapSettingsSelect* = $14;
  1785.     kSCGetInfoSelect*            = $15;
  1786.     kSCSetInfoSelect*            = $16;
  1787.     kSCNewGWorldSelect*            = $17;
  1788.     kSCSetCompressFlagsSelect*    = $18;
  1789.     kSCGetCompressFlagsSelect*    = $19;
  1790.     kSCGetCompressionExtendedSelect* = $1;
  1791.  
  1792.     
  1793. TYPE
  1794.     MovieImportComponent* = Components.ComponentInstance;
  1795.     MovieExportComponent* = Components.ComponentInstance;
  1796.  
  1797.  
  1798. CONST
  1799.     MovieImportType*                = LONG("eat ");
  1800.     MovieExportType*                = LONG("spit");
  1801.  
  1802.     canMovieImportHandles*        = ASH(1,0);
  1803.     canMovieImportFiles*            = ASH(1,1);
  1804.     hasMovieImportUserInterface*    = ASH(1,2);
  1805.     canMovieExportHandles*        = ASH(1,3);
  1806.     canMovieExportFiles*            = ASH(1,4);
  1807.     hasMovieExportUserInterface*    = ASH(1,5);
  1808.     dontAutoFileMovieImport*        = ASH(1,6);
  1809.     canMovieExportAuxDataHandle*    = ASH(1,7);
  1810.     canMovieImportValidateHandles* = ASH(1,8);
  1811.     canMovieImportValidateFile*    = ASH(1,9);
  1812.     dontRegisterWithEasyOpen*    = ASH(1,10);
  1813.     canMovieImportInPlace*        = ASH(1,11);
  1814.     movieImportSubTypeIsFileExtension* = ASH(1,12);
  1815.  
  1816.     kMovieImportExportOpenSelect* = Components.kComponentOpenSelect;
  1817.     kMovieImportExportCloseSelect* = Components.kComponentCloseSelect;
  1818.     kMovieImportExportCanDoSelect* = Components.kComponentCanDoSelect;
  1819.     kMovieImportExportVersionSelect* = Components.kComponentVersionSelect;
  1820.     kMovieImportHandleSelect*    = 1;
  1821.     kMovieImportFileSelect*        = 2;
  1822.     kMovieImportSetSampleDurationSelect* = 3;
  1823.     kMovieImportSetSampleDescriptionSelect* = 4;
  1824.     kMovieImportSetMediaFileSelect* = 5;
  1825.     kMovieImportSetDimensionsSelect* = 6;
  1826.     kMovieImportSetChunkSizeSelect* = 7;
  1827.     kMovieImportSetProgressProcSelect* = 8;
  1828.     kMovieImportSetAuxiliaryDataSelect* = 9;
  1829.     kMovieImportSetFromScrapSelect* = 10;
  1830.     kMovieImportDoUserDialogSelect* = 11;
  1831.     kMovieImportSetDurationSelect* = 12;
  1832.     kMovieImportGetAuxiliaryDataTypeSelect* = 13;
  1833.     kMovieImportValidateSelect*    = 14;
  1834.     kMovieImportGetFileTypeSelect* = 15;
  1835.     kMovieExportToHandleSelect*    = 128;
  1836.     kMovieExportToFileSelect*    = 129;
  1837.     kMovieExportDoUserDialogSelectOBSOLETE* = 130;
  1838.     kMovieExportGetAuxiliaryDataSelect* = 131;
  1839.     kMovieExportSetProgressProcSelect* = 132;
  1840.     kMovieExportSetSampleDescriptionSelect* = 133;
  1841.     kMovieExportDoUserDialogSelect* = 134;
  1842.     kMovieExportGetCreatorTypeSelect* = 135;
  1843.  
  1844.     movieImportCreateTrack*        = 1;
  1845.     movieImportInParallel*        = 2;
  1846.     movieImportMustUseTrack*        = 4;
  1847.  
  1848.     movieImportResultUsedMultipleTracks* = 8;
  1849.  
  1850.  
  1851. PROCEDURE MovieImportHandle*(ci: MovieImportComponent; dataH: Types.Handle; theMovie: Movies.Movie; targetTrack: Movies.Track; VAR usedTrack: Movies.Track; atTime: Movies.TimeValue; VAR addedDuration: Movies.TimeValue; inFlags: LONGINT; VAR outFlags: LONGINT): Components.ComponentResult;
  1852.     (*$IF NOT GENERATINGCFM*)
  1853.     INLINE PASCAL $2F3C, $20, $1, $7000, $A82A;
  1854.     (*$END*)
  1855. PROCEDURE MovieImportFile*(ci: MovieImportComponent; (*CONST*)VAR theFile: Files.FSSpec; theMovie: Movies.Movie; targetTrack: Movies.Track; VAR usedTrack: Movies.Track; atTime: Movies.TimeValue; VAR addedDuration: Movies.TimeValue; inFlags: LONGINT; VAR outFlags: LONGINT): Components.ComponentResult;
  1856.     (*$IF NOT GENERATINGCFM*)
  1857.     INLINE PASCAL $2F3C, $20, $2, $7000, $A82A;
  1858.     (*$END*)
  1859. PROCEDURE MovieImportSetSampleDuration*(ci: MovieImportComponent; duration: Movies.TimeValue; scale: Movies.TimeScale): Components.ComponentResult;
  1860.     (*$IF NOT GENERATINGCFM*)
  1861.     INLINE PASCAL $2F3C, $8, $3, $7000, $A82A;
  1862.     (*$END*)
  1863. PROCEDURE MovieImportSetSampleDescription*(ci: MovieImportComponent; desc: Movies.SampleDescriptionHandle; mediaType: Types.OSType): Components.ComponentResult;
  1864.     (*$IF NOT GENERATINGCFM*)
  1865.     INLINE PASCAL $2F3C, $8, $4, $7000, $A82A;
  1866.     (*$END*)
  1867. PROCEDURE MovieImportSetMediaFile*(ci: MovieImportComponent; alias: Aliases.AliasHandle): Components.ComponentResult;
  1868.     (*$IF NOT GENERATINGCFM*)
  1869.     INLINE PASCAL $2F3C, $4, $5, $7000, $A82A;
  1870.     (*$END*)
  1871. PROCEDURE MovieImportSetDimensions*(ci: MovieImportComponent; width: Types.Fixed; height: Types.Fixed): Components.ComponentResult;
  1872.     (*$IF NOT GENERATINGCFM*)
  1873.     INLINE PASCAL $2F3C, $8, $6, $7000, $A82A;
  1874.     (*$END*)
  1875. PROCEDURE MovieImportSetChunkSize*(ci: MovieImportComponent; chunkSize: LONGINT): Components.ComponentResult;
  1876.     (*$IF NOT GENERATINGCFM*)
  1877.     INLINE PASCAL $2F3C, $4, $7, $7000, $A82A;
  1878.     (*$END*)
  1879. PROCEDURE MovieImportSetProgressProc*(ci: MovieImportComponent; proc: Movies.MovieProgressUPP; refcon: LONGINT): Components.ComponentResult;
  1880.     (*$IF NOT GENERATINGCFM*)
  1881.     INLINE PASCAL $2F3C, $8, $8, $7000, $A82A;
  1882.     (*$END*)
  1883. PROCEDURE MovieImportSetAuxiliaryData*(ci: MovieImportComponent; data: Types.Handle; handleType: Types.OSType): Components.ComponentResult;
  1884.     (*$IF NOT GENERATINGCFM*)
  1885.     INLINE PASCAL $2F3C, $8, $9, $7000, $A82A;
  1886.     (*$END*)
  1887. PROCEDURE MovieImportSetFromScrap*(ci: MovieImportComponent; fromScrap: BOOLEAN): Components.ComponentResult;
  1888.     (*$IF NOT GENERATINGCFM*)
  1889.     INLINE PASCAL $2F3C, $2, $A, $7000, $A82A;
  1890.     (*$END*)
  1891. PROCEDURE MovieImportDoUserDialog*(ci: MovieImportComponent; (*CONST*)VAR theFile: Files.FSSpec; theData: Types.Handle; VAR canceled: BOOLEAN): Components.ComponentResult;
  1892.     (*$IF NOT GENERATINGCFM*)
  1893.     INLINE PASCAL $2F3C, $C, $B, $7000, $A82A;
  1894.     (*$END*)
  1895. PROCEDURE MovieImportSetDuration*(ci: MovieImportComponent; duration: Movies.TimeValue): Components.ComponentResult;
  1896.     (*$IF NOT GENERATINGCFM*)
  1897.     INLINE PASCAL $2F3C, $4, $C, $7000, $A82A;
  1898.     (*$END*)
  1899. PROCEDURE MovieImportGetAuxiliaryDataType*(ci: MovieImportComponent; VAR auxType: Types.OSType): Components.ComponentResult;
  1900.     (*$IF NOT GENERATINGCFM*)
  1901.     INLINE PASCAL $2F3C, $4, $D, $7000, $A82A;
  1902.     (*$END*)
  1903. PROCEDURE MovieImportValidate*(ci: MovieImportComponent; (*CONST*)VAR theFile: Files.FSSpec; theData: Types.Handle; VAR valid: BOOLEAN): Components.ComponentResult;
  1904.     (*$IF NOT GENERATINGCFM*)
  1905.     INLINE PASCAL $2F3C, $C, $E, $7000, $A82A;
  1906.     (*$END*)
  1907. PROCEDURE MovieImportGetFileType*(ci: MovieImportComponent; VAR fileType: Types.OSType): Components.ComponentResult;
  1908.     (*$IF NOT GENERATINGCFM*)
  1909.     INLINE PASCAL $2F3C, $4, $F, $7000, $A82A;
  1910.     (*$END*)
  1911. PROCEDURE MovieExportToHandle*(ci: MovieExportComponent; dataH: Types.Handle; theMovie: Movies.Movie; onlyThisTrack: Movies.Track; startTime: Movies.TimeValue; duration: Movies.TimeValue): Components.ComponentResult;
  1912.     (*$IF NOT GENERATINGCFM*)
  1913.     INLINE PASCAL $2F3C, $14, $80, $7000, $A82A;
  1914.     (*$END*)
  1915. PROCEDURE MovieExportToFile*(ci: MovieExportComponent; (*CONST*)VAR theFile: Files.FSSpec; theMovie: Movies.Movie; onlyThisTrack: Movies.Track; startTime: Movies.TimeValue; duration: Movies.TimeValue): Components.ComponentResult;
  1916.     (*$IF NOT GENERATINGCFM*)
  1917.     INLINE PASCAL $2F3C, $14, $81, $7000, $A82A;
  1918.     (*$END*)
  1919. PROCEDURE MovieExportGetAuxiliaryData*(ci: MovieExportComponent; dataH: Types.Handle; VAR handleType: Types.OSType): Components.ComponentResult;
  1920.     (*$IF NOT GENERATINGCFM*)
  1921.     INLINE PASCAL $2F3C, $8, $83, $7000, $A82A;
  1922.     (*$END*)
  1923. PROCEDURE MovieExportSetProgressProc*(ci: MovieExportComponent; proc: Movies.MovieProgressUPP; refcon: LONGINT): Components.ComponentResult;
  1924.     (*$IF NOT GENERATINGCFM*)
  1925.     INLINE PASCAL $2F3C, $8, $84, $7000, $A82A;
  1926.     (*$END*)
  1927. PROCEDURE MovieExportSetSampleDescription*(ci: MovieExportComponent; desc: Movies.SampleDescriptionHandle; mediaType: Types.OSType): Components.ComponentResult;
  1928.     (*$IF NOT GENERATINGCFM*)
  1929.     INLINE PASCAL $2F3C, $8, $85, $7000, $A82A;
  1930.     (*$END*)
  1931. PROCEDURE MovieExportDoUserDialog*(ci: MovieExportComponent; theMovie: Movies.Movie; onlyThisTrack: Movies.Track; startTime: Movies.TimeValue; duration: Movies.TimeValue; VAR canceled: BOOLEAN): Components.ComponentResult;
  1932.     (*$IF NOT GENERATINGCFM*)
  1933.     INLINE PASCAL $2F3C, $14, $86, $7000, $A82A;
  1934.     (*$END*)
  1935. PROCEDURE MovieExportGetCreatorType*(ci: MovieExportComponent; VAR creator: Types.OSType): Components.ComponentResult;
  1936.     (*$IF NOT GENERATINGCFM*)
  1937.     INLINE PASCAL $2F3C, $4, $87, $7000, $A82A;
  1938.     (*$END*)
  1939. (* Text Export Display Info data structure*)
  1940.  
  1941. TYPE
  1942.     TextDisplayData* = RECORD
  1943.         displayFlags*:            LONGINT;
  1944.         textJustification*:        LONGINT;
  1945.         bgColor*:                Quickdraw.RGBColor;
  1946.         textBox*:                Types.Rect;
  1947.         beginHilite*:            INTEGER;
  1948.         endHilite*:                INTEGER;
  1949.         hiliteColor*:            Quickdraw.RGBColor;
  1950.         doHiliteColor*:            BOOLEAN;
  1951.         filler*:                    Types.SInt8;
  1952.         scrollDelayDur*:            Movies.TimeValue;
  1953.         dropShadowOffset*:        Types.Point;
  1954.         dropShadowTransparency*:    INTEGER;
  1955.     END;
  1956.  
  1957.     TextExportComponent* = Components.ComponentInstance;
  1958.  
  1959.  
  1960. PROCEDURE TextExportGetDisplayData*(ci: TextExportComponent; VAR textDisplay: TextDisplayData): Components.ComponentResult;
  1961.     (*$IF NOT GENERATINGCFM*)
  1962.     INLINE PASCAL $2F3C, $4, $100, $7000, $A82A;
  1963.     (*$END*)
  1964. (***************
  1965.  
  1966.     File Preview Components
  1967.  
  1968. ***************)
  1969.     
  1970. TYPE
  1971.     pnotComponent* = Components.ComponentInstance;
  1972.  
  1973.  
  1974. CONST
  1975.     pnotComponentWantsEvents*    = 1;
  1976.     pnotComponentNeedsNoCache*    = 2;
  1977.  
  1978.     kPreviewOpenSelector*        = 0;
  1979.     kPreviewCloseSelector*        = -1;
  1980.     kPreviewCanDoSelector*        = -2;
  1981.     kPreviewVersionSelector*        = -3;
  1982.     kPreviewShowDataSelector*    = 1;
  1983.     kPreviewMakePreviewSelector*    = 2;
  1984.     kPreviewMakePreviewReferenceSelector* = 3;
  1985.     kPreviewEventSelector*        = 4;
  1986.  
  1987.     ShowFilePreviewComponentType* = LONG("pnot");
  1988.     CreateFilePreviewComponentType* = LONG("pmak");
  1989.  
  1990.  
  1991. PROCEDURE PreviewShowData*(p: pnotComponent; dataType: Types.OSType; data: Types.Handle; (*CONST*)VAR inHere: Types.Rect): Components.ComponentResult;
  1992.     (*$IF NOT GENERATINGCFM*)
  1993.     INLINE PASCAL $2F3C, $C, $1, $7000, $A82A;
  1994.     (*$END*)
  1995. PROCEDURE PreviewMakePreview*(p: pnotComponent; VAR previewType: Types.OSType; VAR previewResult: Types.Handle; (*CONST*)VAR sourceFile: Files.FSSpec; progress: ImageCompression.ICMProgressProcRecordPtr): Components.ComponentResult;
  1996.     (*$IF NOT GENERATINGCFM*)
  1997.     INLINE PASCAL $2F3C, $10, $2, $7000, $A82A;
  1998.     (*$END*)
  1999. PROCEDURE PreviewMakePreviewReference*(p: pnotComponent; VAR previewType: Types.OSType; VAR resID: INTEGER; (*CONST*)VAR sourceFile: Files.FSSpec): Components.ComponentResult;
  2000.     (*$IF NOT GENERATINGCFM*)
  2001.     INLINE PASCAL $2F3C, $C, $3, $7000, $A82A;
  2002.     (*$END*)
  2003. PROCEDURE PreviewEvent*(p: pnotComponent; VAR e: Events.EventRecord; VAR handledEvent: BOOLEAN): Components.ComponentResult;
  2004.     (*$IF NOT GENERATINGCFM*)
  2005.     INLINE PASCAL $2F3C, $8, $4, $7000, $A82A;
  2006.     (*$END*)
  2007. TYPE
  2008.     DataHCompletionProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (request: Types.Ptr; refcon: LONGINT; err: Types.OSErr);
  2009.     DataHCompletionUPP* = Types.UniversalProcPtr;
  2010.  
  2011.  
  2012. CONST
  2013.     kDataHCanRead*                = ASH(1,0);
  2014.     kDataHSpecialRead*            = ASH(1,1);
  2015.     kDataHSpecialReadFile*        = ASH(1,2);
  2016.     kDataHCanWrite*                = ASH(1,3);
  2017.     kDataHSpecialWrite*            = ASH(1,4);
  2018.     kDataHSpecialWriteFile*        = ASH(1,5);
  2019.     kDataHCanStreamingWrite*        = ASH(1,6);
  2020.     kDataHMustCheckDataRef*        = ASH(1,7);
  2021.  
  2022.  
  2023. TYPE
  2024.     DataHVolumeListRecord* = RECORD
  2025.         vRefNum*:                INTEGER;
  2026.         flags*:                    LONGINT;
  2027.     END;
  2028.  
  2029.     DataHVolumeListPtr* = POINTER TO DataHVolumeListRecord;
  2030.  
  2031.     DataHVolumeList* = HANDLE TO DataHVolumeListRecord (*ΔΔ POINTER TO DataHVolumeListPtr*);
  2032.  
  2033.  
  2034. CONST
  2035.     kDataHExtendedSchedule*        = LONG("xtnd");
  2036.  
  2037.  
  2038. TYPE
  2039.     DataHScheduleRecord* = RECORD
  2040.         timeNeededBy*:            Movies.TimeRecord;
  2041.         extendedID*:                LONGINT;                                (* always is kDataHExtendedSchedule*)
  2042.         extendedVers*:            LONGINT;                                (* always set to 0*)
  2043.         priority*:                Types.Fixed;                                    (* 100.0 or more means must have. lower numbers…*)
  2044.     END;
  2045.  
  2046.     DataHSchedulePtr* = POINTER TO DataHScheduleRecord;
  2047.  
  2048.  
  2049. PROCEDURE DataHGetData*(dh: Movies.DataHandler; h: Types.Handle; hOffset: LONGINT; offset: LONGINT; size: LONGINT): Components.ComponentResult;
  2050.     (*$IF NOT GENERATINGCFM*)
  2051.     INLINE PASCAL $2F3C, $10, $2, $7000, $A82A;
  2052.     (*$END*)
  2053. PROCEDURE DataHPutData*(dh: Movies.DataHandler; h: Types.Handle; hOffset: LONGINT; VAR offset: LONGINT; size: LONGINT): Components.ComponentResult;
  2054.     (*$IF NOT GENERATINGCFM*)
  2055.     INLINE PASCAL $2F3C, $10, $3, $7000, $A82A;
  2056.     (*$END*)
  2057. PROCEDURE DataHFlushData*(dh: Movies.DataHandler): Components.ComponentResult;
  2058.     (*$IF NOT GENERATINGCFM*)
  2059.     INLINE PASCAL $2F3C, 0, $4, $7000, $A82A;
  2060.     (*$END*)
  2061. PROCEDURE DataHOpenForWrite*(dh: Movies.DataHandler): Components.ComponentResult;
  2062.     (*$IF NOT GENERATINGCFM*)
  2063.     INLINE PASCAL $2F3C, 0, $5, $7000, $A82A;
  2064.     (*$END*)
  2065. PROCEDURE DataHCloseForWrite*(dh: Movies.DataHandler): Components.ComponentResult;
  2066.     (*$IF NOT GENERATINGCFM*)
  2067.     INLINE PASCAL $2F3C, 0, $6, $7000, $A82A;
  2068.     (*$END*)
  2069. PROCEDURE DataHOpenForRead*(dh: Movies.DataHandler): Components.ComponentResult;
  2070.     (*$IF NOT GENERATINGCFM*)
  2071.     INLINE PASCAL $2F3C, 0, $8, $7000, $A82A;
  2072.     (*$END*)
  2073. PROCEDURE DataHCloseForRead*(dh: Movies.DataHandler): Components.ComponentResult;
  2074.     (*$IF NOT GENERATINGCFM*)
  2075.     INLINE PASCAL $2F3C, 0, $9, $7000, $A82A;
  2076.     (*$END*)
  2077. PROCEDURE DataHSetDataRef*(dh: Movies.DataHandler; dataRef: Types.Handle): Components.ComponentResult;
  2078.     (*$IF NOT GENERATINGCFM*)
  2079.     INLINE PASCAL $2F3C, $4, $A, $7000, $A82A;
  2080.     (*$END*)
  2081. PROCEDURE DataHGetDataRef*(dh: Movies.DataHandler; VAR dataRef: Types.Handle): Components.ComponentResult;
  2082.     (*$IF NOT GENERATINGCFM*)
  2083.     INLINE PASCAL $2F3C, $4, $B, $7000, $A82A;
  2084.     (*$END*)
  2085. PROCEDURE DataHCompareDataRef*(dh: Movies.DataHandler; dataRef: Types.Handle; VAR equal: BOOLEAN): Components.ComponentResult;
  2086.     (*$IF NOT GENERATINGCFM*)
  2087.     INLINE PASCAL $2F3C, $8, $C, $7000, $A82A;
  2088.     (*$END*)
  2089. PROCEDURE DataHTask*(dh: Movies.DataHandler): Components.ComponentResult;
  2090.     (*$IF NOT GENERATINGCFM*)
  2091.     INLINE PASCAL $2F3C, 0, $D, $7000, $A82A;
  2092.     (*$END*)
  2093. PROCEDURE DataHScheduleData*(dh: Movies.DataHandler; PlaceToPutDataPtr: Types.Ptr; FileOffset: LONGINT; DataSize: LONGINT; RefCon: LONGINT; scheduleRec: DataHSchedulePtr; CompletionRtn: DataHCompletionUPP): Components.ComponentResult;
  2094.     (*$IF NOT GENERATINGCFM*)
  2095.     INLINE PASCAL $2F3C, $18, $E, $7000, $A82A;
  2096.     (*$END*)
  2097. PROCEDURE DataHFinishData*(dh: Movies.DataHandler; PlaceToPutDataPtr: Types.Ptr; Cancel: BOOLEAN): Components.ComponentResult;
  2098.     (*$IF NOT GENERATINGCFM*)
  2099.     INLINE PASCAL $2F3C, $6, $F, $7000, $A82A;
  2100.     (*$END*)
  2101. PROCEDURE DataHFlushCache*(dh: Movies.DataHandler): Components.ComponentResult;
  2102.     (*$IF NOT GENERATINGCFM*)
  2103.     INLINE PASCAL $2F3C, 0, $10, $7000, $A82A;
  2104.     (*$END*)
  2105. PROCEDURE DataHResolveDataRef*(dh: Movies.DataHandler; theDataRef: Types.Handle; VAR wasChanged: BOOLEAN; userInterfaceAllowed: BOOLEAN): Components.ComponentResult;
  2106.     (*$IF NOT GENERATINGCFM*)
  2107.     INLINE PASCAL $2F3C, $A, $11, $7000, $A82A;
  2108.     (*$END*)
  2109. PROCEDURE DataHGetFileSize*(dh: Movies.DataHandler; VAR fileSize: LONGINT): Components.ComponentResult;
  2110.     (*$IF NOT GENERATINGCFM*)
  2111.     INLINE PASCAL $2F3C, $4, $12, $7000, $A82A;
  2112.     (*$END*)
  2113. PROCEDURE DataHCanUseDataRef*(dh: Movies.DataHandler; dataRef: Types.Handle; VAR useFlags: LONGINT): Components.ComponentResult;
  2114.     (*$IF NOT GENERATINGCFM*)
  2115.     INLINE PASCAL $2F3C, $8, $13, $7000, $A82A;
  2116.     (*$END*)
  2117. PROCEDURE DataHGetVolumeList*(dh: Movies.DataHandler; VAR volumeList: DataHVolumeList): Components.ComponentResult;
  2118.     (*$IF NOT GENERATINGCFM*)
  2119.     INLINE PASCAL $2F3C, $4, $14, $7000, $A82A;
  2120.     (*$END*)
  2121. PROCEDURE DataHWrite*(dh: Movies.DataHandler; data: Types.Ptr; offset: LONGINT; size: LONGINT; completion: DataHCompletionUPP; refCon: LONGINT): Components.ComponentResult;
  2122.     (*$IF NOT GENERATINGCFM*)
  2123.     INLINE PASCAL $2F3C, $14, $15, $7000, $A82A;
  2124.     (*$END*)
  2125. PROCEDURE DataHPreextend*(dh: Movies.DataHandler; maxToAdd: LONGINT; VAR spaceAdded: LONGINT): Components.ComponentResult;
  2126.     (*$IF NOT GENERATINGCFM*)
  2127.     INLINE PASCAL $2F3C, $8, $16, $7000, $A82A;
  2128.     (*$END*)
  2129. PROCEDURE DataHSetFileSize*(dh: Movies.DataHandler; fileSize: LONGINT): Components.ComponentResult;
  2130.     (*$IF NOT GENERATINGCFM*)
  2131.     INLINE PASCAL $2F3C, $4, $17, $7000, $A82A;
  2132.     (*$END*)
  2133. PROCEDURE DataHGetFreeSpace*(dh: Movies.DataHandler; VAR freeSize: LONGINT): Components.ComponentResult;
  2134.     (*$IF NOT GENERATINGCFM*)
  2135.     INLINE PASCAL $2F3C, $4, $18, $7000, $A82A;
  2136.     (*$END*)
  2137. PROCEDURE DataHCreateFile*(dh: Movies.DataHandler; creator: Types.OSType; deleteExisting: BOOLEAN): Components.ComponentResult;
  2138.     (*$IF NOT GENERATINGCFM*)
  2139.     INLINE PASCAL $2F3C, $6, $19, $7000, $A82A;
  2140.     (*$END*)
  2141. PROCEDURE DataHGetPreferredBlockSize*(dh: Movies.DataHandler; VAR blockSize: LONGINT): Components.ComponentResult;
  2142.     (*$IF NOT GENERATINGCFM*)
  2143.     INLINE PASCAL $2F3C, $4, $1A, $7000, $A82A;
  2144.     (*$END*)
  2145. PROCEDURE DataHGetDeviceIndex*(dh: Movies.DataHandler; VAR deviceIndex: LONGINT): Components.ComponentResult;
  2146.     (*$IF NOT GENERATINGCFM*)
  2147.     INLINE PASCAL $2F3C, $4, $1B, $7000, $A82A;
  2148.     (*$END*)
  2149. PROCEDURE DataHIsStreamingDataHandler*(dh: Movies.DataHandler; VAR yes: BOOLEAN): Components.ComponentResult;
  2150.     (*$IF NOT GENERATINGCFM*)
  2151.     INLINE PASCAL $2F3C, $4, $1C, $7000, $A82A;
  2152.     (*$END*)
  2153. PROCEDURE DataHGetDataInBuffer*(dh: Movies.DataHandler; startOffset: LONGINT; VAR size: LONGINT): Components.ComponentResult;
  2154.     (*$IF NOT GENERATINGCFM*)
  2155.     INLINE PASCAL $2F3C, $8, $1D, $7000, $A82A;
  2156.     (*$END*)
  2157. PROCEDURE DataHGetScheduleAheadTime*(dh: Movies.DataHandler; VAR millisecs: LONGINT): Components.ComponentResult;
  2158.     (*$IF NOT GENERATINGCFM*)
  2159.     INLINE PASCAL $2F3C, $4, $1E, $7000, $A82A;
  2160.     (*$END*)
  2161. PROCEDURE DataHSetCacheSizeLimit*(dh: Movies.DataHandler; cacheSizeLimit: Memory.Size): Components.ComponentResult;
  2162.     (*$IF NOT GENERATINGCFM*)
  2163.     INLINE PASCAL $2F3C, $4, $1F, $7000, $A82A;
  2164.     (*$END*)
  2165. PROCEDURE DataHGetCacheSizeLimit*(dh: Movies.DataHandler; VAR cacheSizeLimit: Memory.Size): Components.ComponentResult;
  2166.     (*$IF NOT GENERATINGCFM*)
  2167.     INLINE PASCAL $2F3C, $4, $20, $7000, $A82A;
  2168.     (*$END*)
  2169. PROCEDURE DataHPlaybackHints*(dh: Movies.DataHandler; flags: LONGINT; minFileOffset: LONGINT; maxFileOffset: LONGINT; bytesPerSecond: LONGINT): Components.ComponentResult;
  2170.     (*$IF NOT GENERATINGCFM*)
  2171.     INLINE PASCAL $2F3C, $10, $103, $7000, $A82A;
  2172.     (*$END*)
  2173.  
  2174. CONST
  2175.     kDataHGetDataSelect*            = $2;
  2176.     kDataHPutDataSelect*            = $3;
  2177.     kDataHFlushDataSelect*        = $4;
  2178.     kDataHOpenForWriteSelect*    = $5;
  2179.     kDataHCloseForWriteSelect*    = $6;
  2180.     kDataHOpenForReadSelect*        = $8;
  2181.     kDataHCloseForReadSelect*    = $9;
  2182.     kDataHSetDataRefSelect*        = $A;
  2183.     kDataHGetDataRefSelect*        = $B;
  2184.     kDataHCompareDataRefSelect*    = $C;
  2185.     kDataHTaskSelect*            = $D;
  2186.     kDataHScheduleDataSelect*    = $E;
  2187.     kDataHFinishDataSelect*        = $F;
  2188.     kDataHFlushCacheSelect*        = $10;
  2189.     kDataHResolveDataRefSelect*    = $11;
  2190.     kDataHGetFileSizeSelect*        = $12;
  2191.     kDataHCanUseDataRefSelect*    = $13;
  2192.     kDataHGetVolumeListSelect*    = $14;
  2193.     kDataHWriteSelect*            = $15;
  2194.     kDataHPreextendSelect*        = $16;
  2195.     kDataHSetFileSizeSelect*        = $17;
  2196.     kDataHGetFreeSpaceSelect*    = $18;
  2197.     kDataHCreateFileSelect*        = $19;
  2198.     kDataHGetPreferredBlockSizeSelect* = $1A;
  2199.     kDataHGetDeviceIndexSelect*    = $1B;
  2200.     kDataHIsStreamingDataHandlerSelect* = $1C;
  2201.     kDataHGetDataInBufferSelect*    = $1D;
  2202.     kDataHGetScheduleAheadTimeSelect* = $1E;
  2203.     kDataHSetCacheSizeLimitSelect* = $1F;
  2204.     kDataHGetCacheSizeLimitSelect* = $20;
  2205.     kDataHPlaybackHintsSelect*    = $103;
  2206.  
  2207.     kMusicComponentType*            = LONG("musi");
  2208.  
  2209.     
  2210. TYPE
  2211.     MusicComponent* = Components.ComponentInstance;
  2212.  
  2213. (* MusicSynthesizerFlags*)
  2214.  
  2215. CONST
  2216.     kSynthesizerDynamicVoice*    = 1;                            (* can reassign voices/channels (else, hogs all channels in mask *)
  2217.     kSynthesizerUsesMIDIPort*    = 2;                            (* must be patched through MIDI Manager *)
  2218.     kSynthesizerMicrotone*        = 4;                            (* can play microtonal scales *)
  2219.     kSynthesizerLimitedMicrotone* = 8;                            (* can play microtones, but only on 1-voice parts *)
  2220.     kSynthesizerMixedDrums*        = 16;                            (* any part can play drum parts, total* = instrument parts *)
  2221.     kSynthesizerSoftware*        = 32;                            (* implemented in main CPU software == uses cpu cycles *)
  2222.     kSynthesizerGMSuperset*        = 8192;
  2223.     kSynthesizerGM*                = 16384;                        (* synth is a GM device *)
  2224.  
  2225. (*
  2226.  * Note that these controller numbers
  2227.  * are _not_ identical to the MIDI controller numbers.
  2228.  * These are _signed_ 8.8 values, and the LSB's are
  2229.  * always sent to a MIDI device. Controllers 32-63 are
  2230.  * reserved (for MIDI, they are LSB's for 0-31, but we
  2231.  * always send both).
  2232.  *
  2233.  * The full range, therefore, is -128.00 to 127.7f.
  2234.  *
  2235.  * _Excepting_ _volume_, all controls default to zero.
  2236.  *
  2237.  * Pitch bend is specified in fractional semitones! No
  2238.  * more "pitch bend range" nonsense. You can bend as far
  2239.  * as you want, any time you want.
  2240.  *)
  2241.     kControllerModulationWheel*    = 1;
  2242.     kControllerBreath*            = 2;
  2243.     kControllerFoot*                = 4;
  2244.     kControllerPortamentoTime*    = 5;
  2245.     kControllerVolume*            = 7;
  2246.     kControllerBalance*            = 8;
  2247.     kControllerPan*                = 10;                            (* 0 - "default", 1 - n: positioned in output 1-n (incl fractions) *)
  2248.     kControllerExpression*        = 11;
  2249.     kControllerPitchBend*        = 32;                            (* positive & negative semitones, with 7 bits fraction *)
  2250.     kControllerAfterTouch*        = 33;
  2251.     kControllerSustain*            = 64;                            (* boolean - positive for on, 0 or negative off *)
  2252.     kControllerPortamento*        = 65;                            (* boolean *)
  2253.     kControllerSostenuto*        = 66;                            (* boolean *)
  2254.     kControllerSoftPedal*        = 67;                            (* boolean *)
  2255.     kControllerReverb*            = 91;
  2256.     kControllerTremolo*            = 92;
  2257.     kControllerChorus*            = 93;
  2258.     kControllerCeleste*            = 94;
  2259.     kControllerPhaser*            = 95;
  2260.  
  2261.     kControllerMaximum*            = $7FFF;                        (* +01111111.11111111 *)
  2262.     kControllerMinimum*            = $8000;                        (* -10000000.00000000 *)
  2263.  
  2264.  
  2265. TYPE
  2266.     SynthesizerDescription* = RECORD
  2267.         synthesizerType*:        Types.OSType;                                    (* synthesizer type (must be same as component subtype) *)
  2268.         name*:                    Types.Str31;                                    (* text name of synthesizer type *)
  2269.         flags*:                    LONGINT;                                (* from the above enum *)
  2270.         voiceCount*:                LONGINT;                                (* maximum polyphony *)
  2271.         partCount*:                LONGINT;                                (* maximum multi-timbrality (and midi channels) *)
  2272.         instrumentCount*:        LONGINT;                                (* non gm, built in (rom) instruments only *)
  2273.         modifiableInstrumentCount*: LONGINT;                                (* plus n-more are user modifiable *)
  2274.         channelMask*:            LONGINT;                                (* (midi device only) which channels device always uses *)
  2275.         drumPartCount*:            LONGINT;                                (* maximum multi-timbrality of drum parts *)
  2276.         drumCount*:                LONGINT;                                (* non gm, built in (rom) drumkits only *)
  2277.         modifiableDrumCount*:    LONGINT;                                (* plus n-more are user modifiable *)
  2278.         drumChannelMask*:        LONGINT;                                (* (midi device only) which channels device always uses *)
  2279.         outputCount*:            LONGINT;                                (* number of audio outputs (usually two) *)
  2280.         latency*:                LONGINT;                                (* response time in µSec *)
  2281.         controllers*:            ARRAY 4 (*ΔΔ[0..3]ΔΔ*) OF LONGINT;                (* array of 128 bits *)
  2282.         gmInstruments*:            ARRAY 4 (*ΔΔ[0..3]ΔΔ*) OF LONGINT;                (* array of 128 bits *)
  2283.         gmDrums*:                ARRAY 4 (*ΔΔ[0..3]ΔΔ*) OF LONGINT;                (* array of 128 bits *)
  2284.     END;
  2285.  
  2286.  
  2287. CONST
  2288.     kVoiceCountDynamic*            = -1;                            (* constant to use to specify dynamic voicing *)
  2289.  
  2290.  
  2291. TYPE
  2292.     ToneDescription* = RECORD
  2293.         synthesizerType*:        Types.OSType;                                    (* synthesizer type *)
  2294.         synthesizerName*:        Types.Str31;                                    (* name of instantiation of synth *)
  2295.         instrumentName*:            Types.Str31;                                    (* preferred name for human use *)
  2296.         instrumentNumber*:        LONGINT;                                (* inst-number used if synth-name matches *)
  2297.         gmNumber*:                LONGINT;                                (* Best matching general MIDI number *)
  2298.     END;
  2299.  
  2300.  
  2301. CONST
  2302.     kFirstDrumkit*                = 16384;                        (* (first value is "no drum". instrument numbers from 16384->16384+128 are drumkits, and for GM they are _defined_ drumkits! *)
  2303.     kLastDrumkit*                = kFirstDrumkit + 128;
  2304.  
  2305. (* InstrumentMatch*)
  2306.     kInstrumentMatchSynthesizerType* = 1;
  2307.     kInstrumentMatchSynthesizerName* = 2;
  2308.     kInstrumentMatchName*        = 4;
  2309.     kInstrumentMatchNumber*        = 8;
  2310.     kInstrumentMatchGMNumber*    = 16;
  2311.  
  2312. (* KnobFlags*)
  2313.     kKnobRealtime*                = 1;                            (* Knob can be changed interactively as part of a sequence (ie knob can be changed at interrupt time) *)
  2314.     kKnobNextNote*                = 2;                            (* Knob only takes effect on the next note played *)
  2315.     kKnobAction*                    = 4;                            (* setting the knob does something immediate *)
  2316.     kKnobNotInstrument*            = 8;                            (* indicates that the knob isn't in the instrument handle *)
  2317.     kKnobAffectsOthers*            = 16;                            (* other knobs will change value from this one *)
  2318.     kKnobMinorGroupStart*        = 64;                            (* knob is first in some logical subgroup of knobs *)
  2319.     kKnobGroupStart*                = 128;                            (* knob is first in some logical group of knobs *)
  2320. (* One of these may be used at a time. *)
  2321.     kKnobTypeNumber*                = 0 * (ASH(1,12));
  2322.     kKnobTypeBoolean*            = ASH(1,12);
  2323.     kKnobTypeNote*                = 2 * (ASH(1,12));
  2324.     kKnobTypePan*                = 3 * (ASH(1,12));
  2325.     kKnobTypeInstrument*            = 4 * (ASH(1,12));                (* knob value* = reference to another instrument number *)
  2326.     kKnobTypeSetting*            = 5 * (ASH(1,12));                (* knob value is 1 of n different things (eg, fm algorithms) *)
  2327.  
  2328.     kUnknownKnobValue*            = $7FFFFFFF;                    (* a knob with this value means, we don't know it. *)
  2329.  
  2330.  
  2331. TYPE
  2332.     KnobDescription* = RECORD
  2333.         name*:                    Types.Str31;
  2334.         lowValue*:                LONGINT;
  2335.         highValue*:                LONGINT;
  2336.         defaultValue*:            LONGINT;                                (* a default instrument is made of all default values *)
  2337.         flags*:                    LONGINT;
  2338.     END;
  2339.  
  2340.     InstrumentData* = RECORD
  2341.         tone*:                    ToneDescription;
  2342.         knobCount*:                LONGINT;
  2343.         knob*:                    ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF LONGINT;
  2344.     END;
  2345.  
  2346.     InstrumentDataPtr* = POINTER TO InstrumentData;
  2347.     InstrumentDataHandle* = HANDLE TO InstrumentData (*ΔΔ POINTER TO InstrumentDataPtr*);
  2348.  
  2349.     FlatInstrument* = RECORD
  2350.         tone*:                    ToneDescription;
  2351.         size*:                    LONGINT;                                (* size in bytes of the following data, including size field (excluding tonedescription) *)
  2352.         data*:                    (*ΔΔPACKEDΔΔ*) ARRAY 4 (*ΔΔ[0..3]ΔΔ*) OF Types.SInt8; (* UInt8 *)
  2353.     END;
  2354.  
  2355.     InstrumentAboutInfo* = RECORD
  2356.         p*:                        Quickdraw.PicHandle;
  2357.         author*:                    Types.Str255;
  2358.         copyright*:                Types.Str255;
  2359.         other*:                    Types.Str255;
  2360.     END;
  2361.  
  2362.     MusicMIDIPacket* = RECORD
  2363.         length*:                    INTEGER;
  2364.         reserved*:                LONGINT;
  2365.         data*:                    (*ΔΔPACKEDΔΔ*) ARRAY 249 (*ΔΔ[0..248]ΔΔ*) OF Types.SInt8; (* UInt8 *)
  2366.     END;
  2367.  
  2368.     MusicMIDISendProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (self: MusicComponent; refCon: LONGINT; VAR mmp: MusicMIDIPacket): Components.ComponentResult;
  2369.     MusicMIDISendUPP* = Types.UniversalProcPtr;
  2370.  
  2371.  
  2372. CONST
  2373.     kMusicFirstSelect*            = 0;
  2374.     kMusicGetDescriptionSelect*    = 1;
  2375.     kMusicGetPartSelect*            = 2;
  2376.     kMusicSetPartSelect*            = 3;
  2377.     kMusicSetInstrumentNumberSelect* = 4;
  2378.     kMusicGetInstrumentNumberSelect* = 5;
  2379.     kMusicStoreInstrumentSelect*    = 6;
  2380.     kMusicGetInstrumentSelect*    = 7;
  2381.     kMusicSetInstrumentSelect*    = 8;
  2382.     kMusicDummyOne*                = 9;
  2383.     kMusicDummyTwo*                = 10;
  2384.     kMusicDummyThree*            = 11;
  2385.     kMusicDummyFour*                = 12;
  2386.     kMusicGetInstrumentKnobDescriptionSelect* = 13;
  2387.     kMusicGetDrumKnobDescriptionSelect* = 14;
  2388.     kMusicGetKnobDescriptionSelect* = 15;
  2389.     kMusicGetPartKnobSelect*        = 16;
  2390.     kMusicSetPartKnobSelect*        = 17;
  2391.     kMusicGetKnobSelect*            = 18;
  2392.     kMusicSetKnobSelect*            = 19;
  2393.     kMusicGetPartNameSelect*        = 20;
  2394.     kMusicSetPartNameSelect*        = 21;
  2395.     kMusicFindToneSelect*        = 22;
  2396.     kMusicPlayNoteSelect*        = 23;
  2397.     kMusicResetPartSelect*        = 24;
  2398.     kMusicSetControllerSelect*    = 25;
  2399.     kMusicGetControllerSelect*    = 26;
  2400.     kMusicGetMIDIProcSelect*        = 27;
  2401.     kMusicSetMIDIProcSelect*        = 28;
  2402.     kMusicGetInstrumentNamesSelect* = 29;
  2403.     kMusicGetDrumNamesSelect*    = 30;
  2404.     kMusicGetMasterTuneSelect*    = 31;
  2405.     kMusicSetMasterTuneSelect*    = 32;
  2406.     kMusicSetFlatInstrumentSelect* = 33;
  2407.     kMusicGetInstrumentAboutInfoSelect* = 34;
  2408.  
  2409.     notImplementedMusicErr*        = $80000000 + ((-2100 - 1));
  2410.     cantSendToSynthesizerErr*    = $80000000 + ((-2100 - 2));
  2411.     cantReceiveFromSynthesizerErr* = $80000000 + ((-2100 - 3));
  2412.     illegalVoiceAllocationErr*    = $80000000 + ((-2100 - 4));
  2413.     illegalPartErr*                = $80000000 + ((-2100 - 5));
  2414.     illegalChannelErr*            = $80000000 + ((-2100 - 6));
  2415.     illegalKnobErr*                = $80000000 + ((-2100 - 7));
  2416.     illegalKnobValueErr*            = $80000000 + ((-2100 - 8));
  2417.     illegalInstrumentErr*        = $80000000 + ((-2100 - 9));
  2418.     illegalControllerErr*        = $80000000 + ((-2100 - 10));
  2419.     midiManagerAbsentErr*        = $80000000 + ((-2100 - 11));
  2420.     synthesizerNotRespondingErr*    = $80000000 + ((-2100 - 12));
  2421.     synthesizerErr*                = $80000000 + ((-2100 - 13));
  2422.     illegalNoteChannelErr*        = $80000000 + ((-2100 - 14));
  2423.     noteChannelNotAllocatedErr*    = $80000000 + ((-2100 - 15));
  2424.     tunePlayerFullErr*            = $80000000 + ((-2100 - 16));
  2425.     tuneParseErr*                = $80000000 + ((-2100 - 17));
  2426.  
  2427.     kGMType*                        = LONG("gm  ");
  2428.  
  2429. (*-----------------------------------------
  2430.     Capabilities and Voice Allocation
  2431. -----------------------------------------*)
  2432.  
  2433. PROCEDURE MusicGetPart*(mc: MusicComponent; part: LONGINT; VAR midiChannel: LONGINT; VAR polyphony: LONGINT): Components.ComponentResult;
  2434.     (*$IF NOT GENERATINGCFM*)
  2435.     INLINE PASCAL $2F3C, $C, $2, $7000, $A82A;
  2436.     (*$END*)
  2437. PROCEDURE MusicSetPart*(mc: MusicComponent; part: LONGINT; midiChannel: LONGINT; polyphony: LONGINT): Components.ComponentResult;
  2438.     (*$IF NOT GENERATINGCFM*)
  2439.     INLINE PASCAL $2F3C, $C, $3, $7000, $A82A;
  2440.     (*$END*)
  2441. PROCEDURE MusicGetDescription*(mc: MusicComponent; VAR sd: SynthesizerDescription): Components.ComponentResult;
  2442.     (*$IF NOT GENERATINGCFM*)
  2443.     INLINE PASCAL $2F3C, $4, $1, $7000, $A82A;
  2444.     (*$END*)
  2445. PROCEDURE MusicGetInstrumentAboutInfo*(mc: MusicComponent; part: LONGINT; VAR iai: InstrumentAboutInfo): Components.ComponentResult;
  2446.     (*$IF NOT GENERATINGCFM*)
  2447.     INLINE PASCAL $2F3C, $8, $22, $7000, $A82A;
  2448.     (*$END*)
  2449. (*-----------------------------------------
  2450.     Instrument Loading and Storing
  2451. -----------------------------------------*)
  2452. PROCEDURE MusicSetInstrumentNumber*(mc: MusicComponent; part: LONGINT; instrumentNumber: LONGINT): Components.ComponentResult;
  2453.     (*$IF NOT GENERATINGCFM*)
  2454.     INLINE PASCAL $2F3C, $8, $4, $7000, $A82A;
  2455.     (*$END*)
  2456. PROCEDURE MusicGetInstrumentNumber*(mc: MusicComponent; part: LONGINT): Components.ComponentResult;
  2457.     (*$IF NOT GENERATINGCFM*)
  2458.     INLINE PASCAL $2F3C, $4, $5, $7000, $A82A;
  2459.     (*$END*)
  2460. PROCEDURE MusicStoreInstrument*(mc: MusicComponent; part: LONGINT; instrumentNumber: LONGINT): Components.ComponentResult;
  2461.     (*$IF NOT GENERATINGCFM*)
  2462.     INLINE PASCAL $2F3C, $8, $6, $7000, $A82A;
  2463.     (*$END*)
  2464. PROCEDURE MusicGetInstrument*(mc: MusicComponent; part: LONGINT; VAR iH: InstrumentDataHandle): Components.ComponentResult;
  2465.     (*$IF NOT GENERATINGCFM*)
  2466.     INLINE PASCAL $2F3C, $8, $7, $7000, $A82A;
  2467.     (*$END*)
  2468. PROCEDURE MusicSetInstrument*(mc: MusicComponent; part: LONGINT; iH: InstrumentDataHandle): Components.ComponentResult;
  2469.     (*$IF NOT GENERATINGCFM*)
  2470.     INLINE PASCAL $2F3C, $8, $8, $7000, $A82A;
  2471.     (*$END*)
  2472. PROCEDURE MusicSetFlatInstrument*(mc: MusicComponent; part: LONGINT; VAR flatInstrument: FlatInstrument): Components.ComponentResult;
  2473.     (*$IF NOT GENERATINGCFM*)
  2474.     INLINE PASCAL $2F3C, $8, $21, $7000, $A82A;
  2475.     (*$END*)
  2476. (*-----------------------------------------
  2477.     Instrument Knobs
  2478. -----------------------------------------*)
  2479. PROCEDURE MusicGetInstrumentKnobDescription*(mc: MusicComponent; knobNumber: LONGINT; VAR mkd: KnobDescription): Components.ComponentResult;
  2480.     (*$IF NOT GENERATINGCFM*)
  2481.     INLINE PASCAL $2F3C, $8, $D, $7000, $A82A;
  2482.     (*$END*)
  2483. PROCEDURE MusicGetDrumKnobDescription*(mc: MusicComponent; knobNumber: LONGINT; VAR mkd: KnobDescription): Components.ComponentResult;
  2484.     (*$IF NOT GENERATINGCFM*)
  2485.     INLINE PASCAL $2F3C, $8, $E, $7000, $A82A;
  2486.     (*$END*)
  2487. PROCEDURE MusicGetPartKnob*(mc: MusicComponent; part: LONGINT; knobNumber: LONGINT): Components.ComponentResult;
  2488.     (*$IF NOT GENERATINGCFM*)
  2489.     INLINE PASCAL $2F3C, $8, $10, $7000, $A82A;
  2490.     (*$END*)
  2491. PROCEDURE MusicSetPartKnob*(mc: MusicComponent; part: LONGINT; knobNumber: LONGINT; knobValue: LONGINT): Components.ComponentResult;
  2492.     (*$IF NOT GENERATINGCFM*)
  2493.     INLINE PASCAL $2F3C, $C, $11, $7000, $A82A;
  2494.     (*$END*)
  2495. (*-----------------------------------------
  2496.     Synthesizer Knobs
  2497. -----------------------------------------*)
  2498. PROCEDURE MusicGetKnobDescription*(mc: MusicComponent; knobNumber: LONGINT; VAR mkd: KnobDescription): Components.ComponentResult;
  2499.     (*$IF NOT GENERATINGCFM*)
  2500.     INLINE PASCAL $2F3C, $8, $F, $7000, $A82A;
  2501.     (*$END*)
  2502. PROCEDURE MusicGetKnob*(mc: MusicComponent; knobNumber: LONGINT): Components.ComponentResult;
  2503.     (*$IF NOT GENERATINGCFM*)
  2504.     INLINE PASCAL $2F3C, $4, $12, $7000, $A82A;
  2505.     (*$END*)
  2506. PROCEDURE MusicSetKnob*(mc: MusicComponent; knobNumber: LONGINT; knobValue: LONGINT): Components.ComponentResult;
  2507.     (*$IF NOT GENERATINGCFM*)
  2508.     INLINE PASCAL $2F3C, $8, $13, $7000, $A82A;
  2509.     (*$END*)
  2510. PROCEDURE MusicSetMasterTune*(mc: MusicComponent; masterTune: Types.Fixed): Components.ComponentResult;
  2511.     (*$IF NOT GENERATINGCFM*)
  2512.     INLINE PASCAL $2F3C, $4, $20, $7000, $A82A;
  2513.     (*$END*)
  2514. PROCEDURE MusicGetMasterTune*(mc: MusicComponent): Components.ComponentResult;
  2515.     (*$IF NOT GENERATINGCFM*)
  2516.     INLINE PASCAL $2F3C, 0, $1F, $7000, $A82A;
  2517.     (*$END*)
  2518. (*-----------------------------------------
  2519.     Names of Instruments
  2520. -----------------------------------------*)
  2521. PROCEDURE MusicGetPartName*(mc: MusicComponent; part: LONGINT; VAR name: Types.Str31): Components.ComponentResult;
  2522.     (*$IF NOT GENERATINGCFM*)
  2523.     INLINE PASCAL $2F3C, $8, $14, $7000, $A82A;
  2524.     (*$END*)
  2525. PROCEDURE MusicSetPartName*(mc: MusicComponent; part: LONGINT; VAR name: Types.Str31): Components.ComponentResult;
  2526.     (*$IF NOT GENERATINGCFM*)
  2527.     INLINE PASCAL $2F3C, $8, $15, $7000, $A82A;
  2528.     (*$END*)
  2529. PROCEDURE MusicFindTone*(mc: MusicComponent; VAR td: ToneDescription; VAR instrumentNumber: LONGINT; VAR fit: LONGINT): Components.ComponentResult;
  2530.     (*$IF NOT GENERATINGCFM*)
  2531.     INLINE PASCAL $2F3C, $C, $16, $7000, $A82A;
  2532.     (*$END*)
  2533. PROCEDURE MusicGetInstrumentNames*(mc: MusicComponent; modifiableInstruments: LONGINT; VAR instrumentNames: Types.Handle; VAR instrumentCategoryLasts: Types.Handle; VAR instrumentCategoryNames: Types.Handle): Components.ComponentResult;
  2534.     (*$IF NOT GENERATINGCFM*)
  2535.     INLINE PASCAL $2F3C, $10, $1D, $7000, $A82A;
  2536.     (*$END*)
  2537. PROCEDURE MusicGetDrumNames*(mc: MusicComponent; modifiableInstruments: LONGINT; VAR instrumentNumbers: Types.Handle; VAR instrumentNames: Types.Handle): Components.ComponentResult;
  2538.     (*$IF NOT GENERATINGCFM*)
  2539.     INLINE PASCAL $2F3C, $C, $1E, $7000, $A82A;
  2540.     (*$END*)
  2541. (*-----------------------------------------
  2542.     Realtime Actions
  2543. -----------------------------------------*)
  2544. PROCEDURE MusicPlayNote*(mc: MusicComponent; part: LONGINT; pitch: LONGINT; velocity: LONGINT): Components.ComponentResult;
  2545.     (*$IF NOT GENERATINGCFM*)
  2546.     INLINE PASCAL $2F3C, $C, $17, $7000, $A82A;
  2547.     (*$END*)
  2548. PROCEDURE MusicResetPart*(mc: MusicComponent; part: LONGINT): Components.ComponentResult;
  2549.     (*$IF NOT GENERATINGCFM*)
  2550.     INLINE PASCAL $2F3C, $4, $18, $7000, $A82A;
  2551.     (*$END*)
  2552. PROCEDURE MusicSetController*(mc: MusicComponent; part: LONGINT; controllerNumber: LONGINT; controllerValue: LONGINT): Components.ComponentResult;
  2553.     (*$IF NOT GENERATINGCFM*)
  2554.     INLINE PASCAL $2F3C, $C, $19, $7000, $A82A;
  2555.     (*$END*)
  2556. PROCEDURE MusicGetController*(mc: MusicComponent; part: LONGINT; controllerNumber: LONGINT): Components.ComponentResult;
  2557.     (*$IF NOT GENERATINGCFM*)
  2558.     INLINE PASCAL $2F3C, $8, $1A, $7000, $A82A;
  2559.     (*$END*)
  2560. (*-----------------------------------------
  2561.     Finding the Hardware
  2562. -----------------------------------------*)
  2563. PROCEDURE MusicGetMIDIProc*(mc: MusicComponent; VAR midiSendProc: MusicMIDISendUPP; VAR refCon: LONGINT): Components.ComponentResult;
  2564.     (*$IF NOT GENERATINGCFM*)
  2565.     INLINE PASCAL $2F3C, $8, $1B, $7000, $A82A;
  2566.     (*$END*)
  2567. PROCEDURE MusicSetMIDIProc*(mc: MusicComponent; midiSendProc: MusicMIDISendUPP; refCon: LONGINT): Components.ComponentResult;
  2568.     (*$IF NOT GENERATINGCFM*)
  2569.     INLINE PASCAL $2F3C, $8, $1C, $7000, $A82A;
  2570.     (*$END*)
  2571. (*--------------------------
  2572.     Types
  2573. --------------------------*)
  2574.     
  2575. TYPE
  2576.     NoteChannel* = Types.Ptr;
  2577.  
  2578.     SynthesizerConnections* = RECORD
  2579.         clientID*:                Types.OSType;
  2580.         inputPortID*:            Types.OSType;
  2581.         outputPortID*:            Types.OSType;
  2582.         midiChannel*:            LONGINT;                                (* The system channel; others are configurable (or the nubus slot number) *)
  2583.         flags*:                    LONGINT;
  2584.         reserved*:                ARRAY 3 (*ΔΔ[0..2]ΔΔ*) OF LONGINT;                (* should be zero *)
  2585.     END;
  2586.  
  2587.     NoteRequest* = RECORD
  2588.         polyphony*:                LONGINT;                                (* Maximum number of voices *)
  2589.         typicalPolyphony*:        Types.Fixed;                                    (* Hint for level mixing *)
  2590.         tone*:                    ToneDescription;
  2591.     END;
  2592.  
  2593.  
  2594. CONST
  2595.     kNAFirstSelector*            = -7;
  2596.     kNATargetSelect*                = -6;
  2597.     kNARegisterSelect*            = -5;
  2598.     kNAVersionSelect*            = -4;
  2599.     kNACanDoSelect*                = -3;
  2600.     kNACloseSelect*                = -2;
  2601.     kNAOpenSelect*                = -1;
  2602.     kNARegisterMusicDeviceSelect* = 0;
  2603.     kNAUnregisterMusicDeviceSelect* = 1;
  2604.     kNAGetRegisteredMusicDeviceSelect* = 2;
  2605.     kNASaveMusicConfigurationSelect* = 3;
  2606.     kNANewNoteChannelSelect*        = 4;
  2607.     kNADisposeNoteChannelSelect*    = 5;
  2608.     kNAGetNoteChannelInfoSelect*    = 6;
  2609.     kNAPrerollNoteChannelSelect*    = 7;
  2610.     kNAUnrollNoteChannelSelect*    = 8;
  2611.     kNAEngageNoteChannelSelect*    = 9;
  2612.     kNADisengageNoteChannelSelect* = 10;
  2613.     kNASetNoteChannelVolumeSelect* = 11;
  2614.     kNAResetNoteChannelSelect*    = 12;
  2615.     kNAPlayNoteSelect*            = 13;
  2616.     kNASetControllerSelect*        = 14;
  2617.     kNASetKnobSelect*            = 15;
  2618.     kNAFindNoteChannelToneSelect* = 16;
  2619.     kNASetNoteChannelInstrumentSelect* = 17;
  2620.     kNAPickInstrumentSelect*        = 18;
  2621.     kNAPickArrangementSelect*    = 19;
  2622.     kNAGetStatusBlockSelect*        = 20;
  2623.     kNASetDefaultMIDIInputSelect* = 21;
  2624.     kNAGetDefaultMIDIInputSelect* = 22;
  2625.     kNAGetNoteChannelStateSelect* = 23;
  2626.     kNASetNoteChannelStateSelect* = 24;
  2627.     kNAUseDefaultMIDIInputSelect* = 25;
  2628.     kNALoseDefaultMIDIInputSelect* = 26;
  2629.     kNAStuffToneDescriptionSelect* = 27;
  2630.     kNACopyrightDialogSelect*    = 28;
  2631.     kNASetFlatInstrumentSelect*    = 29;
  2632.     kNASetInstrumentSelect*        = 30;
  2633.     kNALastSelector*                = 31;
  2634.  
  2635.     
  2636. TYPE
  2637.     NoteAllocator* = Components.ComponentInstance;
  2638.  
  2639.  
  2640. CONST
  2641.     kPickDontMix*                = 1;                            (* dont mix instruments with drum sounds *)
  2642.     kPickSameSynth*                = 2;                            (* only allow the same device that went in, to come out *)
  2643.  
  2644. TYPE
  2645.     MusicMIDIReadHookProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (VAR mp: MusicMIDIPacket; myRefCon: LONGINT): Components.ComponentResult;
  2646.     MusicMIDIReadHookUPP* = Types.UniversalProcPtr;
  2647.  
  2648.  
  2649. CONST
  2650.     kNoteAllocatorType*            = LONG("nota");
  2651.  
  2652. (*--------------------------------
  2653.     Note Allocator Prototypes
  2654. --------------------------------*)
  2655. (*
  2656.  * System Configuration
  2657.  *)
  2658.  
  2659. PROCEDURE NARegisterMusicDevice*(na: NoteAllocator; synthType: Types.OSType; VAR name: Types.Str31; VAR connections: SynthesizerConnections): Components.ComponentResult;
  2660.     (*$IF NOT GENERATINGCFM*)
  2661.     INLINE PASCAL $2F3C, $C, 0, $7000, $A82A;
  2662.     (*$END*)
  2663. PROCEDURE NAUnregisterMusicDevice*(na: NoteAllocator; index: LONGINT): Components.ComponentResult;
  2664.     (*$IF NOT GENERATINGCFM*)
  2665.     INLINE PASCAL $2F3C, $4, $1, $7000, $A82A;
  2666.     (*$END*)
  2667. PROCEDURE NAGetRegisteredMusicDevice*(na: NoteAllocator; index: LONGINT; VAR synthType: Types.OSType; VAR name: Types.Str31; VAR connections: SynthesizerConnections; VAR mc: MusicComponent): Components.ComponentResult;
  2668.     (*$IF NOT GENERATINGCFM*)
  2669.     INLINE PASCAL $2F3C, $14, $2, $7000, $A82A;
  2670.     (*$END*)
  2671. PROCEDURE NASetDefaultMIDIInput*(na: NoteAllocator; VAR sc: SynthesizerConnections): Components.ComponentResult;
  2672.     (*$IF NOT GENERATINGCFM*)
  2673.     INLINE PASCAL $2F3C, $4, $15, $7000, $A82A;
  2674.     (*$END*)
  2675. PROCEDURE NAGetDefaultMIDIInput*(na: NoteAllocator; VAR sc: SynthesizerConnections): Components.ComponentResult;
  2676.     (*$IF NOT GENERATINGCFM*)
  2677.     INLINE PASCAL $2F3C, $4, $16, $7000, $A82A;
  2678.     (*$END*)
  2679. PROCEDURE NASaveMusicConfiguration*(na: NoteAllocator): Components.ComponentResult;
  2680.     (*$IF NOT GENERATINGCFM*)
  2681.     INLINE PASCAL $2F3C, 0, $3, $7000, $A82A;
  2682.     (*$END*)
  2683. (*
  2684.  * Allocation
  2685.  *)
  2686. PROCEDURE NANewNoteChannel*(na: NoteAllocator; VAR noteRequest: NoteRequest; VAR outChannel: NoteChannel): Components.ComponentResult;
  2687.     (*$IF NOT GENERATINGCFM*)
  2688.     INLINE PASCAL $2F3C, $8, $4, $7000, $A82A;
  2689.     (*$END*)
  2690. PROCEDURE NADisposeNoteChannel*(na: NoteAllocator; noteChannel: NoteChannel): Components.ComponentResult;
  2691.     (*$IF NOT GENERATINGCFM*)
  2692.     INLINE PASCAL $2F3C, $4, $5, $7000, $A82A;
  2693.     (*$END*)
  2694. PROCEDURE NAGetNoteChannelInfo*(na: NoteAllocator; noteChannel: NoteChannel; VAR index: LONGINT; VAR part: LONGINT): Components.ComponentResult;
  2695.     (*$IF NOT GENERATINGCFM*)
  2696.     INLINE PASCAL $2F3C, $C, $6, $7000, $A82A;
  2697.     (*$END*)
  2698. PROCEDURE NAUseDefaultMIDIInput*(na: NoteAllocator; readHook: MusicMIDIReadHookUPP; refCon: LONGINT; flags: LONGINT): Components.ComponentResult;
  2699.     (*$IF NOT GENERATINGCFM*)
  2700.     INLINE PASCAL $2F3C, $C, $19, $7000, $A82A;
  2701.     (*$END*)
  2702. PROCEDURE NALoseDefaultMIDIInput*(na: NoteAllocator): Components.ComponentResult;
  2703.     (*$IF NOT GENERATINGCFM*)
  2704.     INLINE PASCAL $2F3C, 0, $1A, $7000, $A82A;
  2705.     (*$END*)
  2706. (*
  2707.  * Setup
  2708.  *)
  2709. PROCEDURE NAPrerollNoteChannel*(na: NoteAllocator; noteChannel: NoteChannel): Components.ComponentResult;
  2710.     (*$IF NOT GENERATINGCFM*)
  2711.     INLINE PASCAL $2F3C, $4, $7, $7000, $A82A;
  2712.     (*$END*)
  2713. PROCEDURE NAUnrollNoteChannel*(na: NoteAllocator; noteChannel: NoteChannel): Components.ComponentResult;
  2714.     (*$IF NOT GENERATINGCFM*)
  2715.     INLINE PASCAL $2F3C, $4, $8, $7000, $A82A;
  2716.     (*$END*)
  2717. PROCEDURE NAEngageNoteChannel*(na: NoteAllocator; noteChannel: NoteChannel): Components.ComponentResult;
  2718.     (*$IF NOT GENERATINGCFM*)
  2719.     INLINE PASCAL $2F3C, $4, $9, $7000, $A82A;
  2720.     (*$END*)
  2721. PROCEDURE NADisengageNoteChannel*(na: NoteAllocator; noteChannel: NoteChannel; silenceNotes: LONGINT): Components.ComponentResult;
  2722.     (*$IF NOT GENERATINGCFM*)
  2723.     INLINE PASCAL $2F3C, $8, $A, $7000, $A82A;
  2724.     (*$END*)
  2725. PROCEDURE NAGetNoteChannelState*(na: NoteAllocator; noteChannel: NoteChannel; instrumentNumber: LONGINT; VAR state: Types.Handle): Components.ComponentResult;
  2726.     (*$IF NOT GENERATINGCFM*)
  2727.     INLINE PASCAL $2F3C, $C, $17, $7000, $A82A;
  2728.     (*$END*)
  2729. PROCEDURE NASetNoteChannelState*(na: NoteAllocator; noteChannel: NoteChannel; instrumentNumber: LONGINT; state: Types.Handle): Components.ComponentResult;
  2730.     (*$IF NOT GENERATINGCFM*)
  2731.     INLINE PASCAL $2F3C, $C, $18, $7000, $A82A;
  2732.     (*$END*)
  2733. PROCEDURE NAResetNoteChannel*(na: NoteAllocator; noteChannel: NoteChannel): Components.ComponentResult;
  2734.     (*$IF NOT GENERATINGCFM*)
  2735.     INLINE PASCAL $2F3C, $4, $C, $7000, $A82A;
  2736.     (*$END*)
  2737. PROCEDURE NASetNoteChannelVolume*(na: NoteAllocator; noteChannel: NoteChannel; volume: Types.Fixed): Components.ComponentResult;
  2738.     (*$IF NOT GENERATINGCFM*)
  2739.     INLINE PASCAL $2F3C, $8, $B, $7000, $A82A;
  2740.     (*$END*)
  2741. PROCEDURE NASetInstrument*(na: NoteAllocator; noteChannel: NoteChannel; VAR instrumentData: InstrumentData): Components.ComponentResult;
  2742.     (*$IF NOT GENERATINGCFM*)
  2743.     INLINE PASCAL $2F3C, $8, $1E, $7000, $A82A;
  2744.     (*$END*)
  2745. PROCEDURE NASetFlatInstrument*(na: NoteAllocator; noteChannel: NoteChannel; VAR flatInstrument: FlatInstrument): Components.ComponentResult;
  2746.     (*$IF NOT GENERATINGCFM*)
  2747.     INLINE PASCAL $2F3C, $8, $1D, $7000, $A82A;
  2748.     (*$END*)
  2749. (*
  2750.  * Control
  2751.  *)
  2752. PROCEDURE NAPlayNote*(na: NoteAllocator; noteChannel: NoteChannel; pitch: LONGINT; velocity: LONGINT): Components.ComponentResult;
  2753.     (*$IF NOT GENERATINGCFM*)
  2754.     INLINE PASCAL $2F3C, $C, $D, $7000, $A82A;
  2755.     (*$END*)
  2756. PROCEDURE NASetController*(na: NoteAllocator; noteChannel: NoteChannel; controllerNumber: LONGINT; controllerValue: LONGINT): Components.ComponentResult;
  2757.     (*$IF NOT GENERATINGCFM*)
  2758.     INLINE PASCAL $2F3C, $C, $E, $7000, $A82A;
  2759.     (*$END*)
  2760. PROCEDURE NASetKnob*(na: NoteAllocator; noteChannel: NoteChannel; knobNumber: LONGINT; knobValue: LONGINT): Components.ComponentResult;
  2761.     (*$IF NOT GENERATINGCFM*)
  2762.     INLINE PASCAL $2F3C, $C, $F, $7000, $A82A;
  2763.     (*$END*)
  2764. PROCEDURE NAFindNoteChannelTone*(na: NoteAllocator; noteChannel: NoteChannel; VAR td: ToneDescription; VAR instrumentNumber: LONGINT): Components.ComponentResult;
  2765.     (*$IF NOT GENERATINGCFM*)
  2766.     INLINE PASCAL $2F3C, $C, $10, $7000, $A82A;
  2767.     (*$END*)
  2768. PROCEDURE NASetNoteChannelInstrument*(na: NoteAllocator; noteChannel: NoteChannel; instrumentNumber: LONGINT): Components.ComponentResult;
  2769.     (*$IF NOT GENERATINGCFM*)
  2770.     INLINE PASCAL $2F3C, $8, $11, $7000, $A82A;
  2771.     (*$END*)
  2772. (*
  2773.  * User Interface
  2774.  *)
  2775. PROCEDURE NAPickInstrument*(na: NoteAllocator; filterProc: Dialogs.ModalFilterUPP; prompt: Types.StringPtr; VAR sd: ToneDescription; flags: LONGINT; refCon: LONGINT; VAR flatList: Types.Ptr; VAR flatChoiceIndex: LONGINT): Components.ComponentResult;
  2776.     (*$IF NOT GENERATINGCFM*)
  2777.     INLINE PASCAL $2F3C, $1C, $12, $7000, $A82A;
  2778.     (*$END*)
  2779. PROCEDURE NAStuffToneDescription*(na: NoteAllocator; gmNumber: LONGINT; VAR td: ToneDescription): Components.ComponentResult;
  2780.     (*$IF NOT GENERATINGCFM*)
  2781.     INLINE PASCAL $2F3C, $8, $1B, $7000, $A82A;
  2782.     (*$END*)
  2783. PROCEDURE NAPickArrangement*(na: NoteAllocator; filterProc: Dialogs.ModalFilterUPP; prompt: Types.StringPtr; partCount: LONGINT; VAR noteRequestList: NoteRequest; t: Movies.Track; songName: Types.StringPtr): Components.ComponentResult;
  2784.     (*$IF NOT GENERATINGCFM*)
  2785.     INLINE PASCAL $2F3C, $18, $13, $7000, $A82A;
  2786.     (*$END*)
  2787. PROCEDURE NACopyrightDialog*(na: NoteAllocator; p: Quickdraw.PicHandle; author: Types.StringPtr; copyright: Types.StringPtr; other: Types.StringPtr; title: Types.StringPtr; filterProc: Dialogs.ModalFilterUPP; refCon: LONGINT): Components.ComponentResult;
  2788.     (*$IF NOT GENERATINGCFM*)
  2789.     INLINE PASCAL $2F3C, $1C, $1C, $7000, $A82A;
  2790.     (*$END*)
  2791. (*
  2792.  * Note Allocator interior views
  2793.  *)
  2794.  
  2795. TYPE
  2796.     NAStatPiece* = RECORD
  2797.         clientName*:                Types.Str31;
  2798.         synthesizerName*:        Types.Str31;
  2799.         part*:                    LONGINT;
  2800.         midiChannel*:            LONGINT;
  2801.         polyphony*:                LONGINT;
  2802.         valid*:                    LONGINT;
  2803.     END;
  2804.  
  2805.     NAStat* = RECORD
  2806.         pieceCount*:                LONGINT;
  2807.         piece*:                    ARRAY 64 (*ΔΔ[0..63]ΔΔ*) OF NAStatPiece;
  2808.     END;
  2809.  
  2810.  
  2811. PROCEDURE NAGetStatusBlock*(na: NoteAllocator; VAR stat: NAStat): Components.ComponentResult;
  2812.     (*$IF NOT GENERATINGCFM*)
  2813.     INLINE PASCAL $2F3C, $4, $14, $7000, $A82A;
  2814.     (*$END*)
  2815. (*--------------------------
  2816.     Types
  2817. --------------------------*)
  2818.  
  2819. CONST
  2820.     kTuneQueueDepth*                = 8;                            (* Deepest you can queue tune segments *)
  2821.  
  2822.  
  2823. TYPE
  2824.     TuneStatus* = RECORD
  2825.         tune*:                    SYSTEM.PTR (*ΔΔ POINTER TO LONGINT*);                                (* currently playing tune *)
  2826.         tunePtr*:                SYSTEM.PTR (*ΔΔ POINTER TO LONGINT*);                                (* position within currently playing piece *)
  2827.         time*:                    Movies.TimeValue;                                (* current tune time *)
  2828.         queueCount*:                INTEGER;                                (* how many pieces queued up? *)
  2829.         queueSpots*:                INTEGER;                                (* How many more tunepieces can be queued *)
  2830.         queueTime*:                Movies.TimeValue;                                (* How much time is queued up? (can be very inaccurate) *)
  2831.         reserved*:                ARRAY 3 (*ΔΔ[0..2]ΔΔ*) OF LONGINT;
  2832.     END;
  2833.  
  2834.  
  2835. CONST
  2836.     kStopTuneFade*                = 1;                            (* do a quick, synchronous fadeout *)
  2837.     kStopTuneSustain*            = 2;                            (* don't silece notes *)
  2838.     kStopTuneInstant*            = 4;                            (* silence notes fast (else, decay them) *)
  2839.     kStopTuneReleaseChannels*    = 8;                            (* afterwards, let the channels go *)
  2840.  
  2841.     kTuneSelect*                    = 3;
  2842.     kTuneSetHeaderSelect*        = 4;
  2843.     kTuneGetTimeBaseSelect*        = 5;
  2844.     kTuneSetTimeScaleSelect*        = 6;
  2845.     kTuneGetTimeScaleSelect*        = 7;
  2846.     kTuneGetIndexedNoteChannelSelect* = 8;
  2847.     kTuneDummy*                    = 9;
  2848.     kTuneQueueSelect*            = 10;
  2849.     kTuneInstantSelect*            = 11;
  2850.     kTuneGetStatusSelect*        = 12;
  2851.     kTuneStopSelect*                = 13;
  2852.     kTuneResumeSelect*            = 14;
  2853.     kTuneFlushSelect*            = 15;
  2854.     kTuneSetVolumeSelect*        = 16;
  2855.     kTuneGetVolumeSelect*        = 17;
  2856.     kTunePrerollSelect*            = 18;
  2857.     kTuneUnrollSelect*            = 19;
  2858.     kTuneLastSelector*            = 20;
  2859.  
  2860. TYPE
  2861.     TuneCallBackProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE ((*CONST*)VAR status: TuneStatus; refCon: LONGINT);
  2862.     TunePlayCallBackProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (VAR event: LONGINT; seed: LONGINT; refCon: LONGINT);
  2863.     TuneCallBackUPP* = Types.UniversalProcPtr;
  2864.     TunePlayCallBackUPP* = Types.UniversalProcPtr;
  2865.  
  2866.     TunePlayer* = Components.ComponentInstance;
  2867.  
  2868.  
  2869. CONST
  2870.     kMaxTunePlayerParts*            = 32;
  2871.     kTunePlayerType*                = LONG("tune");
  2872.  
  2873. (*--------------------------
  2874.     Prototypes
  2875. --------------------------*)
  2876.  
  2877. PROCEDURE TuneSetHeader*(tp: TunePlayer; VAR header: LONGINT): Components.ComponentResult;
  2878.     (*$IF NOT GENERATINGCFM*)
  2879.     INLINE PASCAL $2F3C, $4, $4, $7000, $A82A;
  2880.     (*$END*)
  2881. PROCEDURE TuneGetTimeBase*(tp: TunePlayer; VAR tb: Movies.TimeBase): Components.ComponentResult;
  2882.     (*$IF NOT GENERATINGCFM*)
  2883.     INLINE PASCAL $2F3C, $4, $5, $7000, $A82A;
  2884.     (*$END*)
  2885. PROCEDURE TuneSetTimeScale*(tp: TunePlayer; scale: Movies.TimeScale): Components.ComponentResult;
  2886.     (*$IF NOT GENERATINGCFM*)
  2887.     INLINE PASCAL $2F3C, $4, $6, $7000, $A82A;
  2888.     (*$END*)
  2889. PROCEDURE TuneGetTimeScale*(tp: TunePlayer; VAR scale: Movies.TimeScale): Components.ComponentResult;
  2890.     (*$IF NOT GENERATINGCFM*)
  2891.     INLINE PASCAL $2F3C, $4, $7, $7000, $A82A;
  2892.     (*$END*)
  2893. PROCEDURE TuneGetIndexedNoteChannel*(tp: TunePlayer; i: LONGINT; VAR nc: NoteChannel): Components.ComponentResult;
  2894.     (*$IF NOT GENERATINGCFM*)
  2895.     INLINE PASCAL $2F3C, $8, $8, $7000, $A82A;
  2896.     (*$END*)
  2897. (* Values for when to start. *)
  2898.  
  2899. CONST
  2900.     kTuneStartNow*                = 1;                            (* start after buffer is implied *)
  2901.     kTuneDontClipNotes*            = 2;                            (* allow notes to finish their durations outside sample *)
  2902.     kTuneExcludeEdgeNotes*        = 4;                            (* dont play notes that start at end of tune *)
  2903.     kTuneStartNewMaster*            = 16384;
  2904.  
  2905.  
  2906. PROCEDURE TuneQueue*(tp: TunePlayer; VAR tune: LONGINT; tuneRate: Types.Fixed; tuneStartPosition: LONGINT; tuneStopPosition: LONGINT; queueFlags: LONGINT; callBackProc: TuneCallBackUPP; refCon: LONGINT): Components.ComponentResult;
  2907.     (*$IF NOT GENERATINGCFM*)
  2908.     INLINE PASCAL $2F3C, $1C, $A, $7000, $A82A;
  2909.     (*$END*)
  2910. PROCEDURE TuneInstant*(tp: TunePlayer; VAR tune: LONGINT; tunePosition: LONGINT): Components.ComponentResult;
  2911.     (*$IF NOT GENERATINGCFM*)
  2912.     INLINE PASCAL $2F3C, $8, $B, $7000, $A82A;
  2913.     (*$END*)
  2914. PROCEDURE TuneGetStatus*(tp: TunePlayer; VAR status: TuneStatus): Components.ComponentResult;
  2915.     (*$IF NOT GENERATINGCFM*)
  2916.     INLINE PASCAL $2F3C, $4, $C, $7000, $A82A;
  2917.     (*$END*)
  2918. (* Values for when to start. *)
  2919.  
  2920. CONST
  2921.     kStopSustain*                = 1;                            (* Leaves notes playing, not silent *)
  2922.     kStopFadeout*                = 2;                            (* Does a synchronous fade-out *)
  2923.  
  2924.  
  2925. PROCEDURE TuneStop*(tp: TunePlayer; stopFlags: LONGINT): Components.ComponentResult;
  2926.     (*$IF NOT GENERATINGCFM*)
  2927.     INLINE PASCAL $2F3C, $4, $D, $7000, $A82A;
  2928.     (*$END*)
  2929. PROCEDURE TuneResume*(tp: TunePlayer): Components.ComponentResult;
  2930.     (*$IF NOT GENERATINGCFM*)
  2931.     INLINE PASCAL $2F3C, 0, $E, $7000, $A82A;
  2932.     (*$END*)
  2933. PROCEDURE TuneFlush*(tp: TunePlayer): Components.ComponentResult;
  2934.     (*$IF NOT GENERATINGCFM*)
  2935.     INLINE PASCAL $2F3C, 0, $F, $7000, $A82A;
  2936.     (*$END*)
  2937. PROCEDURE TuneSetVolume*(tp: TunePlayer; volume: Types.Fixed): Components.ComponentResult;
  2938.     (*$IF NOT GENERATINGCFM*)
  2939.     INLINE PASCAL $2F3C, $4, $10, $7000, $A82A;
  2940.     (*$END*)
  2941. PROCEDURE TuneGetVolume*(tp: TunePlayer): Components.ComponentResult;
  2942.     (*$IF NOT GENERATINGCFM*)
  2943.     INLINE PASCAL $2F3C, 0, $11, $7000, $A82A;
  2944.     (*$END*)
  2945. PROCEDURE TunePreroll*(tp: TunePlayer): Components.ComponentResult;
  2946.     (*$IF NOT GENERATINGCFM*)
  2947.     INLINE PASCAL $2F3C, 0, $12, $7000, $A82A;
  2948.     (*$END*)
  2949. PROCEDURE TuneUnroll*(tp: TunePlayer): Components.ComponentResult;
  2950.     (*$IF NOT GENERATINGCFM*)
  2951.     INLINE PASCAL $2F3C, 0, $13, $7000, $A82A;
  2952.     (*$END*)
  2953.     
  2954. TYPE
  2955.     MusicOpWord* = LONGINT;
  2956.     MusicOpWordPtr* = SYSTEM.PTR (*ΔΔ POINTER TO LONGINT*);
  2957.  
  2958. (*     QuickTime Music Movies.Track Event Formats:
  2959.  
  2960.     At this time, QuickTime music tracks support 5 different event types -- REST events,
  2961.     short NOTE events, short CONTROL events, short GENERAL events, Long NOTE events, 
  2962.     long CONTROL events, and variable GENERAL events.
  2963.  
  2964.         • REST Event (4 bytes/event):
  2965.     
  2966.             (0 0 0) (5-bit UNUSED) (24-bit Rest Duration)
  2967.         
  2968.         • Short NOTE Events (4 bytes/event):
  2969.     
  2970.             (0 0 1) (5-bit Instrument) (6-bit Pitch) (7-bit Volume) (11-bit Duration)
  2971.         
  2972.             where:    Pitch is offset by 32 (Actual pitch* = pitch field + 32)
  2973.  
  2974.         • Short CONTROL Events (4 bytes/event):
  2975.     
  2976.             (0 1 0) (5-bit Instrument) (8-bit Controller) (1-bit UNUSED) (1-bit Sign) (7-bit MSB) (7-bit LSB)
  2977.                                                                          ( or 15-bit Signed Value)
  2978.         • Short GENERAL Event (4 bytes/event):
  2979.     
  2980.             (0 1 1) (1-bit UNUSED) (12-bit Sub-Type) (16-bit Value)
  2981.     
  2982.         • Long NOTE Events (8 bytes/event):
  2983.     
  2984.             (1 0 0 1) (12-bit Instrument) (1-bit UNUSED) (7-bit Pitch) (1-bit UNUSED) (7-bit Volume)
  2985.             (1 0) (8-bit UNUSED) (22-bit Duration)
  2986.         
  2987.         • Long CONTROL Event (8 bytes/event):
  2988.         
  2989.             (1 0 1 0) (12-bit Instrument) (16-bit Value MSB) 
  2990.             (1 0) (14-bit Controller) (16-bit Value LSB)
  2991.     
  2992.         • Long KNOB Event (8 bytes/event):
  2993.     
  2994.             (1 0 1 1) (12-bit Sub-Type) (16-bit Value MSB)
  2995.             (1 0) (14-bit KNOB) (16-bit Value LSB)
  2996.     
  2997.         • Variable GENERAL Length Events (N bytes/event):
  2998.     
  2999.             (1 1 1 1) (12-bit Sub-Type) (16-bit Length)
  3000.                 :
  3001.             (32-bit Data values)
  3002.                 :
  3003.             (1 1) (14-bit UNUSED) (16-bit Length)
  3004.     
  3005.             where:    Length field is the number of LONG words in the record.
  3006.                     Lengths include the first and last long words (Minimum length* = 2)
  3007.                 
  3008.     The following event type values have not been used yet and are reserved for 
  3009.     future expansion:
  3010.         
  3011.         • (1 0 0 0)        (8 bytes/event)
  3012.         • (1 1 0 0)        (N bytes/event)
  3013.         • (1 1 0 1)        (N bytes/event)
  3014.         • (1 1 1 0)        (N bytes/event)
  3015.         
  3016.     For all events, the following generalizations apply:
  3017.     
  3018.         -    All duration values are specified in Millisecond units.
  3019.         -     Pitch values are intended to map directly to the MIDI key numbers.
  3020.         -    Controllers from 0 to 127 correspond to the standard MIDI controllers.
  3021.             Controllers greater than 127 correspond to other controls (i.e., Pitch Bend, 
  3022.             Key Pressure, and Channel Pressure).    
  3023. *)
  3024. (* Defines for the implemented music event data fields*)
  3025.  
  3026. CONST
  3027.     kRestEventType*                = $0;                            (* lower 3-bits *)
  3028.     kNoteEventType*                = $1;                            (* lower 3-bits *)
  3029.     kControlEventType*            = $2;                            (* lower 3-bits *)
  3030.     kMarkerEventType*            = $3;                            (* lower 3-bits *)
  3031.     kUndefined1EventType*        = $8;                            (* 4-bits *)
  3032.     kXNoteEventType*                = $9;                            (* 4-bits *)
  3033.     kXControlEventType*            = $A;                            (* 4-bits *)
  3034.     kKnobEventType*                = $B;                            (* 4-bits *)
  3035.     kUndefined2EventType*        = $C;                            (* 4-bits *)
  3036.     kUndefined3EventType*        = $D;                            (* 4-bits *)
  3037.     kUndefined4EventType*        = $E;                            (* 4-bits *)
  3038.     kGeneralEventType*            = $F;                            (* 4-bits *)
  3039.     kXEventLengthBits*            = $2;                            (* 2 bits: indicates 8-byte event record *)
  3040.     kGeneralEventLengthBits*        = $3;                            (* 2 bits: indicates variable length event record *)
  3041.     kEventLen*                    = 1;                            (* length of events in long words *)
  3042.     kXEventLen*                    = 2;
  3043.     kRestEventLen*                = kEventLen;                    (* length of events in long words *)
  3044.     kNoteEventLen*                = kEventLen;
  3045.     kControlEventLen*            = kEventLen;
  3046.     kMarkerEventLen*                = kEventLen;
  3047.     kXNoteEventLen*                = kXEventLen;
  3048.     kXControlEventLen*            = kXEventLen;
  3049.     kGeneralEventLen*            = kXEventLen;                    (* 2 or more, however *)
  3050. (* Universal Event Defines*)
  3051.     kEventLengthFieldPos*        = 30;                            (* by looking at these two bits of the 1st or last word              *)
  3052.     kEventLengthFieldWidth*        = 2;                            (* of an event you can determine the event length                      *)
  3053. (* length field: 0 & 1 => 1 long; 2 => 2 longs; 3 => variable length *)
  3054.     kEventTypeFieldPos*            = 29;                            (* event type field for short events *)
  3055.     kEventTypeFieldWidth*        = 3;                            (* short type is 3 bits *)
  3056.     kXEventTypeFieldPos*            = 28;                            (* event type field for extended events *)
  3057.     kXEventTypeFieldWidth*        = 4;                            (* extended type is 4 bits *)
  3058.     kEventInstrumentFieldPos*    = 24;
  3059.     kEventInstrumentFieldWidth*    = 5;
  3060.     kXEventInstrumentFieldPos*    = 16;                            (* in the 1st long word *)
  3061.     kXEventInstrumentFieldWidth*    = 12;
  3062. (* Rest Events*)
  3063.     kRestEventDurationFieldPos*    = 0;
  3064.     kRestEventDurationFieldWidth* = 24;
  3065.     kRestEventDurationMax*        = ASH(1,kRestEventDurationFieldWidth) - 1;
  3066. (* Note Events*)
  3067.     kNoteEventPitchFieldPos*        = 18;
  3068.     kNoteEventPitchFieldWidth*    = 6;
  3069.     kNoteEventPitchOffset*        = 32;                            (* add to value in pitch field to get actual pitch *)
  3070.     kNoteEventVolumeFieldPos*    = 11;
  3071.     kNoteEventVolumeFieldWidth*    = 7;
  3072.     kNoteEventVolumeOffset*        = 0;                            (* add to value in volume field to get actual volume *)
  3073.     kNoteEventDurationFieldPos*    = 0;
  3074.     kNoteEventDurationFieldWidth* = 11;
  3075.     kNoteEventDurationMax*        = ASH(1,kNoteEventDurationFieldWidth) - 1;
  3076.     kXNoteEventPitchFieldPos*    = 0;                            (* in the 1st long word *)
  3077.     kXNoteEventPitchFieldWidth*    = 16;
  3078.     kXNoteEventDurationFieldPos*    = 0;                            (* in the 2nd long word *)
  3079.     kXNoteEventDurationFieldWidth* = 22;
  3080.     kXNoteEventDurationMax*        = ASH(1,kXNoteEventDurationFieldWidth) - 1;
  3081.     kXNoteEventVolumeFieldPos*    = 22;                            (* in the 2nd long word *)
  3082.     kXNoteEventVolumeFieldWidth*    = 7;
  3083. (* Control Events*)
  3084.     kControlEventControllerFieldPos* = 16;
  3085.     kControlEventControllerFieldWidth* = 8;
  3086.     kControlEventValueFieldPos*    = 0;
  3087.     kControlEventValueFieldWidth* = 16;
  3088.     kXControlEventControllerFieldPos* = 0;                        (* in the 2nd long word *)
  3089.     kXControlEventControllerFieldWidth* = 16;
  3090.     kXControlEventValueFieldPos*    = 0;                            (* in the 1st long word *)
  3091.     kXControlEventValueFieldWidth* = 16;
  3092. (* Knob Events*)
  3093.     kKnobEventValueHighFieldPos*    = 0;                            (* 1st long word *)
  3094.     kKnobEventValueHighFieldWidth* = 16;
  3095.     kKnobEventKnobFieldPos*        = 16;                            (* 2nd long word *)
  3096.     kKnobEventKnobFieldWidth*    = 14;
  3097.     kKnobEventValueLowFieldPos*    = 0;                            (* 2nd long word *)
  3098.     kKnobEventValueLowFieldWidth* = 16;
  3099. (* AIFF.Marker Events*)
  3100.     kMarkerEventSubtypeFieldPos*    = 16;
  3101.     kMarkerEventSubtypeFieldWidth* = 8;
  3102.     kMarkerEventValueFieldPos*    = 0;
  3103.     kMarkerEventValueFieldWidth*    = 16;
  3104. (* General Events*)
  3105.     kGeneralEventSubtypeFieldPos* = 16;                            (* in the last long word *)
  3106.     kGeneralEventSubtypeFieldWidth* = 14;
  3107.     kGeneralEventLengthFieldPos*    = 0;                            (* in the 1st & last long words *)
  3108.     kGeneralEventLengthFieldWidth* = 16;
  3109.  
  3110.     kGeneralEventNoteRequest*    = 1;                            (* Encapsulates NoteRequest data structure *)
  3111.     kGeneralEventInstrument*        = 2;                            (* Encapsulates poly, typical poly, followed by InstrumentData record *)
  3112.     kGeneralEventFlatInstrument*    = 3;                            (* Encapsulates poly, typical poly, followed by FlatInstrument record *)
  3113.     kGeneralEventPartName*        = 4;                            (* Brackets 2 longs follwed by a pascal string (padded to long alignment) *)
  3114.     kGeneralEventPartKey*        = 5;                            (* Brackets 2 longs *)
  3115.  
  3116.     TCSourceRefNameType*            = LONG("name");
  3117.  
  3118.     tcDropFrame*                    = ASH(1,0);
  3119.     tc24HourMax*                    = ASH(1,1);
  3120.     tcNegTimesOK*                = ASH(1,2);
  3121.     tcCounter*                    = ASH(1,3);
  3122.  
  3123.  
  3124. TYPE
  3125.     TimeCodeDef* = RECORD
  3126.         flags*:                    LONGINT;                                (* drop-frame, etc.*)
  3127.         fTimeScale*:                Movies.TimeScale;                                (* time scale of frameDuration (eg. 2997)*)
  3128.         frameDuration*:            Movies.TimeValue;                                (* duration of each frame (eg. 100)*)
  3129.         numFrames*:                Types.SInt8; (* UInt8 *)                        (* number of frames per second for timecode (eg. 30)*)
  3130.         (* number of frames per tick for counter mode*)
  3131.         padding*:                Types.SInt8; (* UInt8 *)                        (* unused padding byte *)
  3132.     END;
  3133.  
  3134.  
  3135. CONST
  3136.     tctNegFlag*                    = $80;                            (* negative bit is in minutes*)
  3137.  
  3138.  
  3139. TYPE
  3140.     TimeCodeTime* = RECORD
  3141.         hours*:                    Types.SInt8; (* UInt8 *)
  3142.         minutes*:                Types.SInt8; (* UInt8 *)
  3143.         seconds*:                Types.SInt8; (* UInt8 *)
  3144.         frames*:                    Types.SInt8; (* UInt8 *)
  3145.     END;
  3146.  
  3147.     TimeCodeCounter* = RECORD
  3148.         counter*:                LONGINT;
  3149.     END;
  3150.  
  3151.     TimeCodeRecord* = RECORD
  3152.         (*ΔΔ CASE INTEGER OF
  3153.         0: ( *)
  3154.             t*:                            TimeCodeTime;
  3155.            (*ΔΔ );
  3156.         1: (
  3157.             c*:                            TimeCodeCounter;
  3158.            );*)
  3159.     END;
  3160.  
  3161.     TimeCodeDescription* = RECORD
  3162.         (* standard sample description header*)
  3163.         descSize*:                LONGINT;
  3164.         dataFormat*:                LONGINT;
  3165.         resvd1*:                    LONGINT;
  3166.         resvd2*:                    INTEGER;
  3167.         dataRefIndex*:            INTEGER;
  3168.         (* timecode specific stuff*)
  3169.         flags*:                    LONGINT;
  3170.         timeCodeDef*:            TimeCodeDef;
  3171.         srcRef*:                    ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF LONGINT;
  3172.     END;
  3173.  
  3174.     TimeCodeDescriptionPtr* = POINTER TO TimeCodeDescription;
  3175.  
  3176.     TimeCodeDescriptionHandle* = HANDLE TO TimeCodeDescription (*ΔΔ POINTER TO TimeCodeDescriptionPtr*);
  3177.  
  3178.  
  3179. CONST
  3180.     tcdfShowTimeCode*            = ASH(1,0);
  3181.  
  3182.     kTCGetCurrentTimeCodeSelect*    = 257;
  3183.     kTCGetTimeCodeAtTimeSelect*    = 258;
  3184.     kTCTimeCodeToStringSelect*    = 259;
  3185.     kTCTimeCodeToFrameNumberSelect* = 260;
  3186.     kTCFrameNumberToTimeCodeSelect* = 261;
  3187.     kTCGetSourceRefSelect*        = 262;
  3188.     kTCSetSourceRefSelect*        = 263;
  3189.     kTCSetTimeCodeFlagsSelect*    = 264;
  3190.     kTCGetTimeCodeFlagsSelect*    = 265;
  3191.     kTCSetDisplayOptionsSelect*    = 266;
  3192.     kTCGetDisplayOptionsSelect*    = 267;
  3193.  
  3194.  
  3195. TYPE
  3196.     TCTextOptions* = RECORD
  3197.         txFont*:                    INTEGER;
  3198.         txFace*:                    INTEGER;
  3199.         txSize*:                    INTEGER;
  3200.         foreColor*:                Quickdraw.RGBColor;
  3201.         backColor*:                Quickdraw.RGBColor;
  3202.     END;
  3203.  
  3204.     TCTextOptionsPtr* = POINTER TO TCTextOptions;
  3205.  
  3206.  
  3207. PROCEDURE TCGetCurrentTimeCode*(mh: Movies.MediaHandler; VAR frameNum: LONGINT; VAR tcdef: TimeCodeDef; VAR tcrec: TimeCodeRecord; VAR srcRefH: Movies.UserData): Movies.HandlerError;
  3208.     (*$IF NOT GENERATINGCFM*)
  3209.     INLINE PASCAL $2F3C, $10, $101, $7000, $A82A;
  3210.     (*$END*)
  3211. PROCEDURE TCGetTimeCodeAtTime*(mh: Movies.MediaHandler; mediaTime: Movies.TimeValue; VAR frameNum: LONGINT; VAR tcdef: TimeCodeDef; VAR tcdata: TimeCodeRecord; VAR srcRefH: Movies.UserData): Movies.HandlerError;
  3212.     (*$IF NOT GENERATINGCFM*)
  3213.     INLINE PASCAL $2F3C, $14, $102, $7000, $A82A;
  3214.     (*$END*)
  3215. PROCEDURE TCTimeCodeToFrameNumber*(mh: Movies.MediaHandler; VAR tcdef: TimeCodeDef; VAR tcrec: TimeCodeRecord; VAR frameNumber: LONGINT): Movies.HandlerError;
  3216.     (*$IF NOT GENERATINGCFM*)
  3217.     INLINE PASCAL $2F3C, $C, $104, $7000, $A82A;
  3218.     (*$END*)
  3219. PROCEDURE TCFrameNumberToTimeCode*(mh: Movies.MediaHandler; frameNumber: LONGINT; VAR tcdef: TimeCodeDef; VAR tcrec: TimeCodeRecord): Movies.HandlerError;
  3220.     (*$IF NOT GENERATINGCFM*)
  3221.     INLINE PASCAL $2F3C, $C, $105, $7000, $A82A;
  3222.     (*$END*)
  3223. PROCEDURE TCTimeCodeToString*(mh: Movies.MediaHandler; VAR tcdef: TimeCodeDef; VAR tcrec: TimeCodeRecord; tcStr: Types.StringPtr): Movies.HandlerError;
  3224.     (*$IF NOT GENERATINGCFM*)
  3225.     INLINE PASCAL $2F3C, $C, $103, $7000, $A82A;
  3226.     (*$END*)
  3227. PROCEDURE TCGetSourceRef*(mh: Movies.MediaHandler; tcdH: TimeCodeDescriptionHandle; VAR srefH: Movies.UserData): Movies.HandlerError;
  3228.     (*$IF NOT GENERATINGCFM*)
  3229.     INLINE PASCAL $2F3C, $8, $106, $7000, $A82A;
  3230.     (*$END*)
  3231. PROCEDURE TCSetSourceRef*(mh: Movies.MediaHandler; tcdH: TimeCodeDescriptionHandle; srefH: Movies.UserData): Movies.HandlerError;
  3232.     (*$IF NOT GENERATINGCFM*)
  3233.     INLINE PASCAL $2F3C, $8, $107, $7000, $A82A;
  3234.     (*$END*)
  3235. PROCEDURE TCSetTimeCodeFlags*(mh: Movies.MediaHandler; flags: LONGINT; flagsMask: LONGINT): Movies.HandlerError;
  3236.     (*$IF NOT GENERATINGCFM*)
  3237.     INLINE PASCAL $2F3C, $8, $108, $7000, $A82A;
  3238.     (*$END*)
  3239. PROCEDURE TCGetTimeCodeFlags*(mh: Movies.MediaHandler; VAR flags: LONGINT): Movies.HandlerError;
  3240.     (*$IF NOT GENERATINGCFM*)
  3241.     INLINE PASCAL $2F3C, $4, $109, $7000, $A82A;
  3242.     (*$END*)
  3243. PROCEDURE TCSetDisplayOptions*(mh: Movies.MediaHandler; textOptions: TCTextOptionsPtr): Movies.HandlerError;
  3244.     (*$IF NOT GENERATINGCFM*)
  3245.     INLINE PASCAL $2F3C, $4, $10A, $7000, $A82A;
  3246.     (*$END*)
  3247. PROCEDURE TCGetDisplayOptions*(mh: Movies.MediaHandler; textOptions: TCTextOptionsPtr): Movies.HandlerError;
  3248.     (*$IF NOT GENERATINGCFM*)
  3249.     INLINE PASCAL $2F3C, $4, $10B, $7000, $A82A;
  3250.     (*$END*)
  3251. (* UPP call backs *)
  3252.  
  3253. CONST
  3254.     uppSGDataProcInfo* = $003BFFE0; (* PROCEDURE (4 byte param, 4 byte param, 4 byte param, 4 byte param, 4 byte param, 4 byte param, 2 byte param, 4 byte param): 2 byte result; *)
  3255.     uppSGModalFilterProcInfo* = $00003FD0; (* PROCEDURE (4 byte param, 4 byte param, 4 byte param, 4 byte param): 1 byte result; *)
  3256.     uppSGGrabProcInfo* = $00000EF0; (* PROCEDURE (4 byte param, 2 byte param, 4 byte param): 4 byte result; *)
  3257.     uppSGGrabCompleteProcInfo* = $00003EF0; (* PROCEDURE (4 byte param, 2 byte param, 4 byte param, 4 byte param): 4 byte result; *)
  3258.     uppSGDisplayProcInfo* = $0000FEF0; (* PROCEDURE (4 byte param, 2 byte param, 4 byte param, 4 byte param, 4 byte param): 4 byte result; *)
  3259.     uppSGCompressProcInfo* = $00000EF0; (* PROCEDURE (4 byte param, 2 byte param, 4 byte param): 4 byte result; *)
  3260.     uppSGCompressCompleteProcInfo* = $0000FEF0; (* PROCEDURE (4 byte param, 2 byte param, 4 byte param, 4 byte param, 4 byte param): 4 byte result; *)
  3261.     uppSGAddFrameProcInfo* = $0003FEF0; (* PROCEDURE (4 byte param, 2 byte param, 4 byte param, 4 byte param, 4 byte param, 4 byte param): 4 byte result; *)
  3262.     uppSGTransferFrameProcInfo* = $0000FEF0; (* PROCEDURE (4 byte param, 2 byte param, 4 byte param, 4 byte param, 4 byte param): 4 byte result; *)
  3263.     uppSGGrabCompressCompleteProcInfo* = $0000FFF0; (* PROCEDURE (4 byte param, 4 byte param, 4 byte param, 4 byte param, 4 byte param): 4 byte result; *)
  3264.     uppSGDisplayCompressProcInfo* = $0003FFF0; (* PROCEDURE (4 byte param, 4 byte param, 4 byte param, 4 byte param, 4 byte param, 4 byte param): 4 byte result; *)
  3265.     uppVdigIntProcInfo* = $000003C0; (* PROCEDURE (4 byte param, 4 byte param); *)
  3266.     uppSCModalFilterProcInfo* = $00003FD0; (* PROCEDURE (4 byte param, 4 byte param, 4 byte param, 4 byte param): 1 byte result; *)
  3267.     uppSCModalHookProcInfo* = $00003EE0; (* PROCEDURE (4 byte param, 2 byte param, 4 byte param, 4 byte param): 2 byte result; *)
  3268.     uppDataHCompletionProcInfo* = $00000BC0; (* PROCEDURE (4 byte param, 4 byte param, 2 byte param); *)
  3269.     uppMusicMIDISendProcInfo* = $00000FF0; (* PROCEDURE (4 byte param, 4 byte param, 4 byte param): 4 byte result; *)
  3270.     uppMusicMIDIReadHookProcInfo* = $000003F0; (* PROCEDURE (4 byte param, 4 byte param): 4 byte result; *)
  3271.     uppTuneCallBackProcInfo* = $000003C0; (* PROCEDURE (4 byte param, 4 byte param); *)
  3272.     uppTunePlayCallBackProcInfo* = $00000FC0; (* PROCEDURE (4 byte param, 4 byte param, 4 byte param); *)
  3273.  
  3274. PROCEDURE NewSGDataProc*(userRoutine: SGDataProcPtr): SGDataUPP;
  3275.     (*$IF NOT GENERATINGCFM *)
  3276.     INLINE PASCAL $2E9F;
  3277.     (*$END*)
  3278.  
  3279. PROCEDURE NewSGModalFilterProc*(userRoutine: SGModalFilterProcPtr): SGModalFilterUPP;
  3280.     (*$IF NOT GENERATINGCFM *)
  3281.     INLINE PASCAL $2E9F;
  3282.     (*$END*)
  3283.  
  3284. PROCEDURE NewSGGrabProc*(userRoutine: SGGrabProcPtr): SGGrabUPP;
  3285.     (*$IF NOT GENERATINGCFM *)
  3286.     INLINE PASCAL $2E9F;
  3287.     (*$END*)
  3288.  
  3289. PROCEDURE NewSGGrabCompleteProc*(userRoutine: SGGrabCompleteProcPtr): SGGrabCompleteUPP;
  3290.     (*$IF NOT GENERATINGCFM *)
  3291.     INLINE PASCAL $2E9F;
  3292.     (*$END*)
  3293.  
  3294. PROCEDURE NewSGDisplayProc*(userRoutine: SGDisplayProcPtr): SGDisplayUPP;
  3295.     (*$IF NOT GENERATINGCFM *)
  3296.     INLINE PASCAL $2E9F;
  3297.     (*$END*)
  3298.  
  3299. PROCEDURE NewSGCompressProc*(userRoutine: SGCompressProcPtr): SGCompressUPP;
  3300.     (*$IF NOT GENERATINGCFM *)
  3301.     INLINE PASCAL $2E9F;
  3302.     (*$END*)
  3303.  
  3304. PROCEDURE NewSGCompressCompleteProc*(userRoutine: SGCompressCompleteProcPtr): SGCompressCompleteUPP;
  3305.     (*$IF NOT GENERATINGCFM *)
  3306.     INLINE PASCAL $2E9F;
  3307.     (*$END*)
  3308.  
  3309. PROCEDURE NewSGAddFrameProc*(userRoutine: SGAddFrameProcPtr): SGAddFrameUPP;
  3310.     (*$IF NOT GENERATINGCFM *)
  3311.     INLINE PASCAL $2E9F;
  3312.     (*$END*)
  3313.  
  3314. PROCEDURE NewSGTransferFrameProc*(userRoutine: SGTransferFrameProcPtr): SGTransferFrameUPP;
  3315.     (*$IF NOT GENERATINGCFM *)
  3316.     INLINE PASCAL $2E9F;
  3317.     (*$END*)
  3318.  
  3319. PROCEDURE NewSGGrabCompressCompleteProc*(userRoutine: SGGrabCompressCompleteProcPtr): SGGrabCompressCompleteUPP;
  3320.     (*$IF NOT GENERATINGCFM *)
  3321.     INLINE PASCAL $2E9F;
  3322.     (*$END*)
  3323.  
  3324. PROCEDURE NewSGDisplayCompressProc*(userRoutine: SGDisplayCompressProcPtr): SGDisplayCompressUPP;
  3325.     (*$IF NOT GENERATINGCFM *)
  3326.     INLINE PASCAL $2E9F;
  3327.     (*$END*)
  3328.  
  3329. PROCEDURE NewVdigIntProc*(userRoutine: VdigIntProcPtr): VdigIntUPP;
  3330.     (*$IF NOT GENERATINGCFM *)
  3331.     INLINE PASCAL $2E9F;
  3332.     (*$END*)
  3333.  
  3334. PROCEDURE NewSCModalFilterProc*(userRoutine: SCModalFilterProcPtr): SCModalFilterUPP;
  3335.     (*$IF NOT GENERATINGCFM *)
  3336.     INLINE PASCAL $2E9F;
  3337.     (*$END*)
  3338.  
  3339. PROCEDURE NewSCModalHookProc*(userRoutine: SCModalHookProcPtr): SCModalHookUPP;
  3340.     (*$IF NOT GENERATINGCFM *)
  3341.     INLINE PASCAL $2E9F;
  3342.     (*$END*)
  3343.  
  3344. PROCEDURE NewDataHCompletionProc*(userRoutine: DataHCompletionProcPtr): DataHCompletionUPP;
  3345.     (*$IF NOT GENERATINGCFM *)
  3346.     INLINE PASCAL $2E9F;
  3347.     (*$END*)
  3348.  
  3349. PROCEDURE NewMusicMIDISendProc*(userRoutine: MusicMIDISendProcPtr): MusicMIDISendUPP;
  3350.     (*$IF NOT GENERATINGCFM *)
  3351.     INLINE PASCAL $2E9F;
  3352.     (*$END*)
  3353.  
  3354. PROCEDURE NewMusicMIDIReadHookProc*(userRoutine: MusicMIDIReadHookProcPtr): MusicMIDIReadHookUPP;
  3355.     (*$IF NOT GENERATINGCFM *)
  3356.     INLINE PASCAL $2E9F;
  3357.     (*$END*)
  3358.  
  3359. PROCEDURE NewTuneCallBackProc*(userRoutine: TuneCallBackProcPtr): TuneCallBackUPP;
  3360.     (*$IF NOT GENERATINGCFM *)
  3361.     INLINE PASCAL $2E9F;
  3362.     (*$END*)
  3363.  
  3364. PROCEDURE NewTunePlayCallBackProc*(userRoutine: TunePlayCallBackProcPtr): TunePlayCallBackUPP;
  3365.     (*$IF NOT GENERATINGCFM *)
  3366.     INLINE PASCAL $2E9F;
  3367.     (*$END*)
  3368.  
  3369. PROCEDURE CallSGDataProc*(c: SGChannel; p: Types.Ptr; len: LONGINT; VAR offset: LONGINT; chRefCon: LONGINT; time: Movies.TimeValue; writeType: INTEGER; refCon: LONGINT; userRoutine: SGDataUPP): Types.OSErr;
  3370.     (*$IF NOT GENERATINGCFM*)
  3371.     INLINE PASCAL $205F, $4E90;
  3372.     (*$END*)
  3373.  
  3374. PROCEDURE CallSGModalFilterProc*(theDialog: Dialogs.DialogPtr; VAR theEvent: Events.EventRecord; VAR itemHit: INTEGER; refCon: LONGINT; userRoutine: SGModalFilterUPP): BOOLEAN;
  3375.     (*$IF NOT GENERATINGCFM*)
  3376.     INLINE PASCAL $205F, $4E90;
  3377.     (*$END*)
  3378.  
  3379. PROCEDURE CallSGGrabProc*(c: SGChannel; bufferNum: INTEGER; refCon: LONGINT; userRoutine: SGGrabUPP): Components.ComponentResult;
  3380.     (*$IF NOT GENERATINGCFM*)
  3381.     INLINE PASCAL $205F, $4E90;
  3382.     (*$END*)
  3383.  
  3384. PROCEDURE CallSGGrabCompleteProc*(c: SGChannel; bufferNum: INTEGER; VAR done: BOOLEAN; refCon: LONGINT; userRoutine: SGGrabCompleteUPP): Components.ComponentResult;
  3385.     (*$IF NOT GENERATINGCFM*)
  3386.     INLINE PASCAL $205F, $4E90;
  3387.     (*$END*)
  3388.  
  3389. PROCEDURE CallSGDisplayProc*(c: SGChannel; bufferNum: INTEGER; VAR mp: ImageCompression.MatrixRecord; clipRgn: Quickdraw.RgnHandle; refCon: LONGINT; userRoutine: SGDisplayUPP): Components.ComponentResult;
  3390.     (*$IF NOT GENERATINGCFM*)
  3391.     INLINE PASCAL $205F, $4E90;
  3392.     (*$END*)
  3393.  
  3394. PROCEDURE CallSGCompressProc*(c: SGChannel; bufferNum: INTEGER; refCon: LONGINT; userRoutine: SGCompressUPP): Components.ComponentResult;
  3395.     (*$IF NOT GENERATINGCFM*)
  3396.     INLINE PASCAL $205F, $4E90;
  3397.     (*$END*)
  3398.  
  3399. PROCEDURE CallSGCompressCompleteProc*(c: SGChannel; bufferNum: INTEGER; VAR done: BOOLEAN; VAR ci: SGCompressInfo; refCon: LONGINT; userRoutine: SGCompressCompleteUPP): Components.ComponentResult;
  3400.     (*$IF NOT GENERATINGCFM*)
  3401.     INLINE PASCAL $205F, $4E90;
  3402.     (*$END*)
  3403.  
  3404. PROCEDURE CallSGAddFrameProc*(c: SGChannel; bufferNum: INTEGER; atTime: Movies.TimeValue; scale: Movies.TimeScale; (*CONST*)VAR ci: SGCompressInfo; refCon: LONGINT; userRoutine: SGAddFrameUPP): Components.ComponentResult;
  3405.     (*$IF NOT GENERATINGCFM*)
  3406.     INLINE PASCAL $205F, $4E90;
  3407.     (*$END*)
  3408.  
  3409. PROCEDURE CallSGTransferFrameProc*(c: SGChannel; bufferNum: INTEGER; VAR mp: ImageCompression.MatrixRecord; clipRgn: Quickdraw.RgnHandle; refCon: LONGINT; userRoutine: SGTransferFrameUPP): Components.ComponentResult;
  3410.     (*$IF NOT GENERATINGCFM*)
  3411.     INLINE PASCAL $205F, $4E90;
  3412.     (*$END*)
  3413.  
  3414. PROCEDURE CallSGGrabCompressCompleteProc*(c: SGChannel; VAR done: BOOLEAN; VAR ci: SGCompressInfo; VAR t: Movies.TimeRecord; refCon: LONGINT; userRoutine: SGGrabCompressCompleteUPP): Components.ComponentResult;
  3415.     (*$IF NOT GENERATINGCFM*)
  3416.     INLINE PASCAL $205F, $4E90;
  3417.     (*$END*)
  3418.  
  3419. PROCEDURE CallSGDisplayCompressProc*(c: SGChannel; dataPtr: Types.Ptr; desc: ImageCompression.ImageDescriptionHandle; VAR mp: ImageCompression.MatrixRecord; clipRgn: Quickdraw.RgnHandle; refCon: LONGINT; userRoutine: SGDisplayCompressUPP): Components.ComponentResult;
  3420.     (*$IF NOT GENERATINGCFM*)
  3421.     INLINE PASCAL $205F, $4E90;
  3422.     (*$END*)
  3423.  
  3424. PROCEDURE CallVdigIntProc*(flags: LONGINT; refcon: LONGINT; userRoutine: VdigIntUPP);
  3425.     (*$IF NOT GENERATINGCFM*)
  3426.     INLINE PASCAL $205F, $4E90;
  3427.     (*$END*)
  3428.  
  3429. PROCEDURE CallSCModalFilterProc*(theDialog: Dialogs.DialogPtr; VAR theEvent: Events.EventRecord; VAR itemHit: INTEGER; refcon: LONGINT; userRoutine: SCModalFilterUPP): BOOLEAN;
  3430.     (*$IF NOT GENERATINGCFM*)
  3431.     INLINE PASCAL $205F, $4E90;
  3432.     (*$END*)
  3433.  
  3434. PROCEDURE CallSCModalHookProc*(theDialog: Dialogs.DialogPtr; itemHit: INTEGER; params: (*ΔΔUNIVΔΔ*) Types.Ptr; refcon: LONGINT; userRoutine: SCModalHookUPP): INTEGER;
  3435.     (*$IF NOT GENERATINGCFM*)
  3436.     INLINE PASCAL $205F, $4E90;
  3437.     (*$END*)
  3438.  
  3439. PROCEDURE CallDataHCompletionProc*(request: Types.Ptr; refcon: LONGINT; err: Types.OSErr; userRoutine: DataHCompletionUPP);
  3440.     (*$IF NOT GENERATINGCFM*)
  3441.     INLINE PASCAL $205F, $4E90;
  3442.     (*$END*)
  3443.  
  3444. PROCEDURE CallMusicMIDISendProc*(self: MusicComponent; refCon: LONGINT; VAR mmp: MusicMIDIPacket; userRoutine: MusicMIDISendUPP): Components.ComponentResult;
  3445.     (*$IF NOT GENERATINGCFM*)
  3446.     INLINE PASCAL $205F, $4E90;
  3447.     (*$END*)
  3448.  
  3449. PROCEDURE CallMusicMIDIReadHookProc*(VAR mp: MusicMIDIPacket; myRefCon: LONGINT; userRoutine: MusicMIDIReadHookUPP): Components.ComponentResult;
  3450.     (*$IF NOT GENERATINGCFM*)
  3451.     INLINE PASCAL $205F, $4E90;
  3452.     (*$END*)
  3453.  
  3454. PROCEDURE CallTuneCallBackProc*((*CONST*)VAR status: TuneStatus; refCon: LONGINT; userRoutine: TuneCallBackUPP);
  3455.     (*$IF NOT GENERATINGCFM*)
  3456.     INLINE PASCAL $205F, $4E90;
  3457.     (*$END*)
  3458.  
  3459. PROCEDURE CallTunePlayCallBackProc*(VAR event: LONGINT; seed: LONGINT; refCon: LONGINT; userRoutine: TunePlayCallBackUPP);
  3460.     (*$IF NOT GENERATINGCFM*)
  3461.     INLINE PASCAL $205F, $4E90;
  3462.     (*$END*)
  3463.  
  3464. (* $ALIGN RESET*)
  3465. (* $POP*)
  3466.  
  3467.  END QuickTimeComponents.
  3468.